MODULE module_dm USE module_machine USE module_wrf_error USE module_driver_constants IMPLICIT NONE INTEGER, PARAMETER :: max_halo_width = 6 INTEGER :: ips_save, ipe_save, jps_save, jpe_save, itrace INTEGER ntasks, ntasks_y, ntasks_x, mytask, mytask_x, mytask_y INTEGER local_communicator, local_communicator_periodic, local_iocommunicator INTEGER local_communicator_x, local_communicator_y LOGICAL :: dm_debug_flag = .FALSE. INTERFACE wrf_dm_maxval MODULE PROCEDURE wrf_dm_maxval_real , wrf_dm_maxval_integer, wrf_dm_maxval_doubleprecision END INTERFACE INTERFACE wrf_dm_minval MODULE PROCEDURE wrf_dm_minval_real , wrf_dm_minval_integer, wrf_dm_minval_doubleprecision END INTERFACE CONTAINS SUBROUTINE MPASPECT( P, MINM, MINN, PROCMIN_M, PROCMIN_N ) IMPLICIT NONE INTEGER P, M, N, MINI, MINM, MINN, PROCMIN_M, PROCMIN_N MINI = 2*P MINM = 1 MINN = P DO M = 1, P IF ( MOD( P, M ) .EQ. 0 ) THEN N = P / M IF ( ABS(M-N) .LT. MINI & .AND. M .GE. PROCMIN_M & .AND. N .GE. PROCMIN_N & ) THEN MINI = ABS(M-N) MINM = M MINN = N ENDIF ENDIF ENDDO IF ( MINM .LT. PROCMIN_M .OR. MINN .LT. PROCMIN_N ) THEN WRITE( wrf_err_message , * )'MPASPECT: UNABLE TO GENERATE PROCESSOR MESH. STOPPING.' CALL wrf_message ( TRIM ( wrf_err_message ) ) WRITE(0,*)' PROCMIN_M ', PROCMIN_M WRITE( wrf_err_message , * )' PROCMIN_M ', PROCMIN_M CALL wrf_message ( TRIM ( wrf_err_message ) ) WRITE( wrf_err_message , * )' PROCMIN_N ', PROCMIN_N CALL wrf_message ( TRIM ( wrf_err_message ) ) WRITE( wrf_err_message , * )' P ', P CALL wrf_message ( TRIM ( wrf_err_message ) ) WRITE( wrf_err_message , * )' MINM ', MINM CALL wrf_message ( TRIM ( wrf_err_message ) ) WRITE( wrf_err_message , * )' MINN ', MINN CALL wrf_message ( TRIM ( wrf_err_message ) ) CALL wrf_error_fatal3("",91,& 'module_dm: mpaspect' ) ENDIF RETURN END SUBROUTINE MPASPECT SUBROUTINE compute_mesh( ntasks , ntasks_x, ntasks_y ) IMPLICIT NONE INTEGER, INTENT(IN) :: ntasks INTEGER, INTENT(OUT) :: ntasks_x, ntasks_y CALL nl_get_nproc_x ( 1, ntasks_x ) CALL nl_get_nproc_y ( 1, ntasks_y ) IF ( ntasks_x .GT. 0 .OR. ntasks_y .GT. 0 ) THEN IF ( ntasks_x .GT. 0 .AND. ntasks_y .EQ. -1 ) THEN ntasks_y = ntasks / ntasks_x ELSE IF ( ntasks_x .EQ. -1 .AND. ntasks_y .GT. 0 ) THEN ntasks_x = ntasks / ntasks_y ENDIF IF ( ntasks_x * ntasks_y .NE. ntasks ) THEN WRITE( wrf_err_message , * )'WRF_DM_INITIALIZE (RSL_LITE): nproc_x * nproc_y in namelist ne ',ntasks CALL wrf_error_fatal3("",115,& wrf_err_message ) ENDIF ELSE CALL mpaspect ( ntasks, ntasks_x, ntasks_y, 1, 1 ) ENDIF END SUBROUTINE compute_mesh SUBROUTINE wrf_dm_initialize IMPLICIT NONE INCLUDE 'mpif.h' INTEGER :: local_comm, local_comm2, new_local_comm, group, newgroup, p, p1, ierr INTEGER, ALLOCATABLE, DIMENSION(:) :: ranks INTEGER comdup INTEGER, DIMENSION(2) :: dims, coords LOGICAL, DIMENSION(2) :: isperiodic LOGICAL :: reorder_mesh CALL wrf_get_dm_communicator ( local_comm ) CALL mpi_comm_size( local_comm, ntasks, ierr ) CALL nl_get_reorder_mesh( 1, reorder_mesh ) CALL compute_mesh( ntasks, ntasks_x, ntasks_y ) WRITE( wrf_err_message , * )'Ntasks in X ',ntasks_x,', ntasks in Y ',ntasks_y CALL wrf_message( wrf_err_message ) CALL mpi_comm_rank( local_comm, mytask, ierr ) IF ( reorder_mesh ) THEN ALLOCATE (ranks(ntasks)) CALL mpi_comm_dup ( local_comm , local_comm2, ierr ) CALL mpi_comm_group ( local_comm2, group, ierr ) DO p1=1,ntasks p = p1 - 1 ranks(p1) = mod( p , ntasks_x ) * ntasks_y + p / ntasks_x ENDDO CALL mpi_group_incl( group, ntasks, ranks, newgroup, ierr ) DEALLOCATE (ranks) CALL mpi_comm_create( local_comm2, newgroup, new_local_comm , ierr ) ELSE new_local_comm = local_comm ENDIF dims(1) = ntasks_y dims(2) = ntasks_x isperiodic(1) = .false. isperiodic(2) = .false. CALL mpi_cart_create( new_local_comm, 2, dims, isperiodic, .false., local_communicator, ierr ) dims(1) = ntasks_y dims(2) = ntasks_x isperiodic(1) = .true. isperiodic(2) = .true. CALL mpi_cart_create( new_local_comm, 2, dims, isperiodic, .false., local_communicator_periodic, ierr ) CALL mpi_comm_rank( local_communicator_periodic, mytask, ierr ) CALL mpi_cart_coords( local_communicator_periodic, mytask, 2, coords, ierr ) CALL mpi_comm_rank( local_communicator, mytask, ierr ) CALL mpi_cart_coords( local_communicator, mytask, 2, coords, ierr ) mytask_x = coords(2) mytask_y = coords(1) CALL nl_set_nproc_x ( 1, ntasks_x ) CALL nl_set_nproc_y ( 1, ntasks_y ) CALL MPI_Comm_dup( new_local_comm, comdup, ierr ) IF ( ierr .NE. 0 ) CALL wrf_error_fatal3("",187,& 'MPI_Comm_dup fails in 20061228 mod') CALL MPI_Comm_split(comdup,mytask_y,mytask,local_communicator_x,ierr) IF ( ierr .NE. 0 ) CALL wrf_error_fatal3("",190,& 'MPI_Comm_split fails for x in 20061228 mod') CALL MPI_Comm_split(comdup,mytask_x,mytask,local_communicator_y,ierr) IF ( ierr .NE. 0 ) CALL wrf_error_fatal3("",193,& 'MPI_Comm_split fails for y in 20061228 mod') CALL wrf_set_dm_communicator ( local_communicator ) RETURN END SUBROUTINE wrf_dm_initialize SUBROUTINE get_dm_max_halo_width( id, width ) IMPLICIT NONE INTEGER, INTENT(IN) :: id INTEGER, INTENT(OUT) :: width IF ( id .EQ. 1 ) THEN width = max_halo_width ELSE width = max_halo_width + 3 ENDIF RETURN END SUBROUTINE get_dm_max_halo_width SUBROUTINE patch_domain_rsl_lite( id , parent, parent_id, & sd1 , ed1 , sp1 , ep1 , sm1 , em1 , & sd2 , ed2 , sp2 , ep2 , sm2 , em2 , & sd3 , ed3 , sp3 , ep3 , sm3 , em3 , & sp1x , ep1x , sm1x , em1x , & sp2x , ep2x , sm2x , em2x , & sp3x , ep3x , sm3x , em3x , & sp1y , ep1y , sm1y , em1y , & sp2y , ep2y , sm2y , em2y , & sp3y , ep3y , sm3y , em3y , & bdx , bdy ) USE module_domain, ONLY : domain, head_grid, find_grid_by_id, alloc_space_field IMPLICIT NONE INTEGER, INTENT(IN) :: sd1 , ed1 , sd2 , ed2 , sd3 , ed3 , bdx , bdy INTEGER, INTENT(OUT) :: sp1 , ep1 , sp2 , ep2 , sp3 , ep3 , & sm1 , em1 , sm2 , em2 , sm3 , em3 INTEGER, INTENT(OUT) :: sp1x , ep1x , sp2x , ep2x , sp3x , ep3x , & sm1x , em1x , sm2x , em2x , sm3x , em3x INTEGER, INTENT(OUT) :: sp1y , ep1y , sp2y , ep2y , sp3y , ep3y , & sm1y , em1y , sm2y , em2y , sm3y , em3y INTEGER, INTENT(IN) :: id, parent_id TYPE(domain),POINTER :: parent INTEGER :: ids, ide, jds, jde, kds, kde INTEGER :: ims, ime, jms, jme, kms, kme INTEGER :: ips, ipe, jps, jpe, kps, kpe INTEGER :: imsx, imex, jmsx, jmex, kmsx, kmex INTEGER :: ipsx, ipex, jpsx, jpex, kpsx, kpex INTEGER :: imsy, imey, jmsy, jmey, kmsy, kmey INTEGER :: ipsy, ipey, jpsy, jpey, kpsy, kpey INTEGER :: c_sd1 , c_ed1 , c_sd2 , c_ed2 , c_sd3 , c_ed3 INTEGER :: c_sp1 , c_ep1 , c_sp2 , c_ep2 , c_sp3 , c_ep3 , & c_sm1 , c_em1 , c_sm2 , c_em2 , c_sm3 , c_em3 INTEGER :: c_sp1x , c_ep1x , c_sp2x , c_ep2x , c_sp3x , c_ep3x , & c_sm1x , c_em1x , c_sm2x , c_em2x , c_sm3x , c_em3x INTEGER :: c_sp1y , c_ep1y , c_sp2y , c_ep2y , c_sp3y , c_ep3y , & c_sm1y , c_em1y , c_sm2y , c_em2y , c_sm3y , c_em3y INTEGER :: c_ids, c_ide, c_jds, c_jde, c_kds, c_kde INTEGER :: c_ims, c_ime, c_jms, c_jme, c_kms, c_kme INTEGER :: c_ips, c_ipe, c_jps, c_jpe, c_kps, c_kpe INTEGER :: idim , jdim , kdim , rem , a, b INTEGER :: i, j, ni, nj, Px, Py, P INTEGER :: parent_grid_ratio, i_parent_start, j_parent_start INTEGER :: shw INTEGER :: idim_cd, jdim_cd, ierr INTEGER :: max_dom TYPE(domain), POINTER :: intermediate_grid TYPE(domain), POINTER :: nest_grid CHARACTER*256 :: mess INTEGER parent_max_halo_width INTEGER thisdomain_max_halo_width SELECT CASE ( model_data_order ) CASE ( DATA_ORDER_ZXY ) ids = sd2 ; ide = ed2 jds = sd3 ; jde = ed3 kds = sd1 ; kde = ed1 CASE ( DATA_ORDER_XYZ ) ids = sd1 ; ide = ed1 jds = sd2 ; jde = ed2 kds = sd3 ; kde = ed3 CASE ( DATA_ORDER_XZY ) ids = sd1 ; ide = ed1 jds = sd3 ; jde = ed3 kds = sd2 ; kde = ed2 CASE ( DATA_ORDER_YXZ) ids = sd2 ; ide = ed2 jds = sd1 ; jde = ed1 kds = sd3 ; kde = ed3 END SELECT CALL nl_get_max_dom( 1 , max_dom ) CALL get_dm_max_halo_width( id , thisdomain_max_halo_width ) IF ( id .GT. 1 ) THEN CALL get_dm_max_halo_width( parent%id , parent_max_halo_width ) ENDIF CALL compute_memory_dims_rsl_lite ( id, thisdomain_max_halo_width, 0 , bdx, bdy, & ids, ide, jds, jde, kds, kde, & ims, ime, jms, jme, kms, kme, & imsx, imex, jmsx, jmex, kmsx, kmex, & imsy, imey, jmsy, jmey, kmsy, kmey, & ips, ipe, jps, jpe, kps, kpe, & ipsx, ipex, jpsx, jpex, kpsx, kpex, & ipsy, ipey, jpsy, jpey, kpsy, kpey ) IF ( id .GT. 1 ) THEN CALL nl_get_parent_grid_ratio( id, parent_grid_ratio ) if ( mod(ime,parent_grid_ratio) .NE. 0 ) ime = ime + parent_grid_ratio - mod(ime,parent_grid_ratio) if ( mod(jme,parent_grid_ratio) .NE. 0 ) jme = jme + parent_grid_ratio - mod(jme,parent_grid_ratio) ENDIF SELECT CASE ( model_data_order ) CASE ( DATA_ORDER_ZXY ) sp2 = ips ; ep2 = ipe ; sm2 = ims ; em2 = ime sp3 = jps ; ep3 = jpe ; sm3 = jms ; em3 = jme sp1 = kps ; ep1 = kpe ; sm1 = kms ; em1 = kme sp2x = ipsx ; ep2x = ipex ; sm2x = imsx ; em2x = imex sp3x = jpsx ; ep3x = jpex ; sm3x = jmsx ; em3x = jmex sp1x = kpsx ; ep1x = kpex ; sm1x = kmsx ; em1x = kmex sp2y = ipsy ; ep2y = ipey ; sm2y = imsy ; em2y = imey sp3y = jpsy ; ep3y = jpey ; sm3y = jmsy ; em3y = jmey sp1y = kpsy ; ep1y = kpey ; sm1y = kmsy ; em1y = kmey CASE ( DATA_ORDER_ZYX ) sp3 = ips ; ep3 = ipe ; sm3 = ims ; em3 = ime sp2 = jps ; ep2 = jpe ; sm2 = jms ; em2 = jme sp1 = kps ; ep1 = kpe ; sm1 = kms ; em1 = kme sp3x = ipsx ; ep3x = ipex ; sm3x = imsx ; em3x = imex sp2x = jpsx ; ep2x = jpex ; sm2x = jmsx ; em2x = jmex sp1x = kpsx ; ep1x = kpex ; sm1x = kmsx ; em1x = kmex sp3y = ipsy ; ep3y = ipey ; sm3y = imsy ; em3y = imey sp2y = jpsy ; ep2y = jpey ; sm2y = jmsy ; em2y = jmey sp1y = kpsy ; ep1y = kpey ; sm1y = kmsy ; em1y = kmey CASE ( DATA_ORDER_XYZ ) sp1 = ips ; ep1 = ipe ; sm1 = ims ; em1 = ime sp2 = jps ; ep2 = jpe ; sm2 = jms ; em2 = jme sp3 = kps ; ep3 = kpe ; sm3 = kms ; em3 = kme sp1x = ipsx ; ep1x = ipex ; sm1x = imsx ; em1x = imex sp2x = jpsx ; ep2x = jpex ; sm2x = jmsx ; em2x = jmex sp3x = kpsx ; ep3x = kpex ; sm3x = kmsx ; em3x = kmex sp1y = ipsy ; ep1y = ipey ; sm1y = imsy ; em1y = imey sp2y = jpsy ; ep2y = jpey ; sm2y = jmsy ; em2y = jmey sp3y = kpsy ; ep3y = kpey ; sm3y = kmsy ; em3y = kmey CASE ( DATA_ORDER_YXZ) sp2 = ips ; ep2 = ipe ; sm2 = ims ; em2 = ime sp1 = jps ; ep1 = jpe ; sm1 = jms ; em1 = jme sp3 = kps ; ep3 = kpe ; sm3 = kms ; em3 = kme sp2x = ipsx ; ep2x = ipex ; sm2x = imsx ; em2x = imex sp1x = jpsx ; ep1x = jpex ; sm1x = jmsx ; em1x = jmex sp3x = kpsx ; ep3x = kpex ; sm3x = kmsx ; em3x = kmex sp2y = ipsy ; ep2y = ipey ; sm2y = imsy ; em2y = imey sp1y = jpsy ; ep1y = jpey ; sm1y = jmsy ; em1y = jmey sp3y = kpsy ; ep3y = kpey ; sm3y = kmsy ; em3y = kmey CASE ( DATA_ORDER_XZY ) sp1 = ips ; ep1 = ipe ; sm1 = ims ; em1 = ime sp3 = jps ; ep3 = jpe ; sm3 = jms ; em3 = jme sp2 = kps ; ep2 = kpe ; sm2 = kms ; em2 = kme sp1x = ipsx ; ep1x = ipex ; sm1x = imsx ; em1x = imex sp3x = jpsx ; ep3x = jpex ; sm3x = jmsx ; em3x = jmex sp2x = kpsx ; ep2x = kpex ; sm2x = kmsx ; em2x = kmex sp1y = ipsy ; ep1y = ipey ; sm1y = imsy ; em1y = imey sp3y = jpsy ; ep3y = jpey ; sm3y = jmsy ; em3y = jmey sp2y = kpsy ; ep2y = kpey ; sm2y = kmsy ; em2y = kmey CASE ( DATA_ORDER_YZX ) sp3 = ips ; ep3 = ipe ; sm3 = ims ; em3 = ime sp1 = jps ; ep1 = jpe ; sm1 = jms ; em1 = jme sp2 = kps ; ep2 = kpe ; sm2 = kms ; em2 = kme sp3x = ipsx ; ep3x = ipex ; sm3x = imsx ; em3x = imex sp1x = jpsx ; ep1x = jpex ; sm1x = jmsx ; em1x = jmex sp2x = kpsx ; ep2x = kpex ; sm2x = kmsx ; em2x = kmex sp3y = ipsy ; ep3y = ipey ; sm3y = imsy ; em3y = imey sp1y = jpsy ; ep1y = jpey ; sm1y = jmsy ; em1y = jmey sp2y = kpsy ; ep2y = kpey ; sm2y = kmsy ; em2y = kmey END SELECT IF ( id.EQ.1 ) THEN WRITE(wrf_err_message,*)'*************************************' CALL wrf_message( TRIM(wrf_err_message) ) WRITE(wrf_err_message,*)'Parent domain' CALL wrf_message( TRIM(wrf_err_message) ) WRITE(wrf_err_message,*)'ids,ide,jds,jde ',ids,ide,jds,jde CALL wrf_message( TRIM(wrf_err_message) ) WRITE(wrf_err_message,*)'ims,ime,jms,jme ',ims,ime,jms,jme CALL wrf_message( TRIM(wrf_err_message) ) WRITE(wrf_err_message,*)'ips,ipe,jps,jpe ',ips,ipe,jps,jpe CALL wrf_message( TRIM(wrf_err_message) ) WRITE(wrf_err_message,*)'*************************************' CALL wrf_message( TRIM(wrf_err_message) ) ENDIF IF ( id .GT. 1 ) THEN CALL nl_get_shw( id, shw ) CALL nl_get_i_parent_start( id , i_parent_start ) CALL nl_get_j_parent_start( id , j_parent_start ) CALL nl_get_parent_grid_ratio( id, parent_grid_ratio ) SELECT CASE ( model_data_order ) CASE ( DATA_ORDER_ZXY ) idim = ed2-sd2+1 jdim = ed3-sd3+1 kdim = ed1-sd1+1 c_kds = sd1 ; c_kde = ed1 CASE ( DATA_ORDER_ZYX ) idim = ed3-sd3+1 jdim = ed2-sd2+1 kdim = ed1-sd1+1 c_kds = sd1 ; c_kde = ed1 CASE ( DATA_ORDER_XYZ ) idim = ed1-sd1+1 jdim = ed2-sd2+1 kdim = ed3-sd3+1 c_kds = sd3 ; c_kde = ed3 CASE ( DATA_ORDER_YXZ) idim = ed2-sd2+1 jdim = ed1-sd1+1 kdim = ed3-sd3+1 c_kds = sd3 ; c_kde = ed3 CASE ( DATA_ORDER_XZY ) idim = ed1-sd1+1 jdim = ed3-sd3+1 kdim = ed2-sd2+1 c_kds = sd2 ; c_kde = ed2 CASE ( DATA_ORDER_YZX ) idim = ed3-sd3+1 jdim = ed1-sd1+1 kdim = ed2-sd2+1 c_kds = sd2 ; c_kde = ed2 END SELECT idim_cd = idim / parent_grid_ratio + 1 + 2*shw + 1 jdim_cd = jdim / parent_grid_ratio + 1 + 2*shw + 1 c_ids = i_parent_start-shw ; c_ide = c_ids + idim_cd - 1 c_jds = j_parent_start-shw ; c_jde = c_jds + jdim_cd - 1 c_ips = -1 nj = ( c_jds - j_parent_start ) * parent_grid_ratio + 1 + 1 ; ierr = 0 DO i = c_ids, c_ide ni = ( i - i_parent_start ) * parent_grid_ratio + 1 + 1 ; CALL task_for_point ( ni, nj, ids, ide, jds, jde, ntasks_x, ntasks_y, Px, Py, & 1, 1, ierr ) IF ( Px .EQ. mytask_x ) THEN c_ipe = i IF ( c_ips .EQ. -1 ) c_ips = i ENDIF ENDDO IF ( ierr .NE. 0 ) THEN CALL tfp_message("../frame/module_dm.F",464) ENDIF IF (c_ips .EQ. -1 ) THEN c_ipe = -1 c_ips = 0 ENDIF c_jps = -1 ni = ( c_ids - i_parent_start ) * parent_grid_ratio + 1 + 1 ; ierr = 0 DO j = c_jds, c_jde nj = ( j - j_parent_start ) * parent_grid_ratio + 1 + 1 ; CALL task_for_point ( ni, nj, ids, ide, jds, jde, ntasks_x, ntasks_y, Px, Py, & 1, 1, ierr ) IF ( Py .EQ. mytask_y ) THEN c_jpe = j IF ( c_jps .EQ. -1 ) c_jps = j ENDIF ENDDO IF ( ierr .NE. 0 ) THEN CALL tfp_message("../frame/module_dm.F",486) ENDIF IF (c_jps .EQ. -1 ) THEN c_jpe = -1 c_jps = 0 ENDIF IF ( c_ips <= c_ipe ) THEN IF ( mytask_x .EQ. 0 ) THEN c_ips = c_ips - shw ENDIF IF ( mytask_x .EQ. ntasks_x-1 ) THEN c_ipe = c_ipe + shw ENDIF c_ims = max( c_ips - max(shw,thisdomain_max_halo_width), c_ids - bdx ) - 1 c_ime = min( c_ipe + max(shw,thisdomain_max_halo_width), c_ide + bdx ) + 1 ELSE c_ims = 0 c_ime = 0 ENDIF IF ( c_jps <= c_jpe ) THEN IF ( mytask_y .EQ. 0 ) THEN c_jps = c_jps - shw ENDIF IF ( mytask_y .EQ. ntasks_y-1 ) THEN c_jpe = c_jpe + shw ENDIF c_jms = max( c_jps - max(shw,thisdomain_max_halo_width), c_jds - bdx ) - 1 c_jme = min( c_jpe + max(shw,thisdomain_max_halo_width), c_jde + bdx ) + 1 ELSE c_jms = 0 c_jme = 0 ENDIF c_kps = 1 c_kpe = c_kde c_kms = 1 c_kme = c_kde WRITE(wrf_err_message,*)'*************************************' CALL wrf_message( TRIM(wrf_err_message) ) WRITE(wrf_err_message,*)'Nesting domain' CALL wrf_message( TRIM(wrf_err_message) ) WRITE(wrf_err_message,*)'ids,ide,jds,jde ',ids,ide,jds,jde CALL wrf_message( TRIM(wrf_err_message) ) WRITE(wrf_err_message,*)'ims,ime,jms,jme ',ims,ime,jms,jme CALL wrf_message( TRIM(wrf_err_message) ) WRITE(wrf_err_message,*)'ips,ipe,jps,jpe ',ips,ipe,jps,jpe CALL wrf_message( TRIM(wrf_err_message) ) WRITE(wrf_err_message,*)'INTERMEDIATE domain' CALL wrf_message( TRIM(wrf_err_message) ) WRITE(wrf_err_message,*)'ids,ide,jds,jde ',c_ids,c_ide,c_jds,c_jde CALL wrf_message( TRIM(wrf_err_message) ) WRITE(wrf_err_message,*)'ims,ime,jms,jme ',c_ims,c_ime,c_jms,c_jme CALL wrf_message( TRIM(wrf_err_message) ) WRITE(wrf_err_message,*)'ips,ipe,jps,jpe ',c_ips,c_ipe,c_jps,c_jpe CALL wrf_message( TRIM(wrf_err_message) ) WRITE(wrf_err_message,*)'*************************************' CALL wrf_message( TRIM(wrf_err_message) ) SELECT CASE ( model_data_order ) CASE ( DATA_ORDER_ZXY ) c_sd2 = c_ids ; c_ed2 = c_ide ; c_sp2 = c_ips ; c_ep2 = c_ipe ; c_sm2 = c_ims ; c_em2 = c_ime c_sd3 = c_jds ; c_ed3 = c_jde ; c_sp3 = c_jps ; c_ep3 = c_jpe ; c_sm3 = c_jms ; c_em3 = c_jme c_sd1 = c_kds ; c_ed1 = c_kde ; c_sp1 = c_kps ; c_ep1 = c_kpe ; c_sm1 = c_kms ; c_em1 = c_kme CASE ( DATA_ORDER_ZYX ) c_sd3 = c_ids ; c_ed3 = c_ide ; c_sp3 = c_ips ; c_ep3 = c_ipe ; c_sm3 = c_ims ; c_em3 = c_ime c_sd2 = c_jds ; c_ed2 = c_jde ; c_sp2 = c_jps ; c_ep2 = c_jpe ; c_sm2 = c_jms ; c_em2 = c_jme c_sd1 = c_kds ; c_ed1 = c_kde ; c_sp1 = c_kps ; c_ep1 = c_kpe ; c_sm1 = c_kms ; c_em1 = c_kme CASE ( DATA_ORDER_XYZ ) c_sd1 = c_ids ; c_ed1 = c_ide ; c_sp1 = c_ips ; c_ep1 = c_ipe ; c_sm1 = c_ims ; c_em1 = c_ime c_sd2 = c_jds ; c_ed2 = c_jde ; c_sp2 = c_jps ; c_ep2 = c_jpe ; c_sm2 = c_jms ; c_em2 = c_jme c_sd3 = c_kds ; c_ed3 = c_kde ; c_sp3 = c_kps ; c_ep3 = c_kpe ; c_sm3 = c_kms ; c_em3 = c_kme CASE ( DATA_ORDER_YXZ) c_sd2 = c_ids ; c_ed2 = c_ide ; c_sp2 = c_ips ; c_ep2 = c_ipe ; c_sm2 = c_ims ; c_em2 = c_ime c_sd1 = c_jds ; c_ed1 = c_jde ; c_sp1 = c_jps ; c_ep1 = c_jpe ; c_sm1 = c_jms ; c_em1 = c_jme c_sd3 = c_kds ; c_ed3 = c_kde ; c_sp3 = c_kps ; c_ep3 = c_kpe ; c_sm3 = c_kms ; c_em3 = c_kme CASE ( DATA_ORDER_XZY ) c_sd1 = c_ids ; c_ed1 = c_ide ; c_sp1 = c_ips ; c_ep1 = c_ipe ; c_sm1 = c_ims ; c_em1 = c_ime c_sd3 = c_jds ; c_ed3 = c_jde ; c_sp3 = c_jps ; c_ep3 = c_jpe ; c_sm3 = c_jms ; c_em3 = c_jme c_sd2 = c_kds ; c_ed2 = c_kde ; c_sp2 = c_kps ; c_ep2 = c_kpe ; c_sm2 = c_kms ; c_em2 = c_kme CASE ( DATA_ORDER_YZX ) c_sd3 = c_ids ; c_ed3 = c_ide ; c_sp3 = c_ips ; c_ep3 = c_ipe ; c_sm3 = c_ims ; c_em3 = c_ime c_sd1 = c_jds ; c_ed1 = c_jde ; c_sp1 = c_jps ; c_ep1 = c_jpe ; c_sm1 = c_jms ; c_em1 = c_jme c_sd2 = c_kds ; c_ed2 = c_kde ; c_sp2 = c_kps ; c_ep2 = c_kpe ; c_sm2 = c_kms ; c_em2 = c_kme END SELECT ALLOCATE ( intermediate_grid ) ALLOCATE ( intermediate_grid%parents( max_parents ) ) ALLOCATE ( intermediate_grid%nests( max_nests ) ) intermediate_grid%allocated=.false. NULLIFY( intermediate_grid%sibling ) DO i = 1, max_nests NULLIFY( intermediate_grid%nests(i)%ptr ) ENDDO NULLIFY (intermediate_grid%next) NULLIFY (intermediate_grid%same_level) NULLIFY (intermediate_grid%i_start) NULLIFY (intermediate_grid%j_start) NULLIFY (intermediate_grid%i_end) NULLIFY (intermediate_grid%j_end) intermediate_grid%id = id intermediate_grid%num_nests = 0 intermediate_grid%num_siblings = 0 intermediate_grid%num_parents = 1 intermediate_grid%max_tiles = 0 intermediate_grid%num_tiles_spec = 0 CALL find_grid_by_id ( id, head_grid, nest_grid ) nest_grid%intermediate_grid => intermediate_grid intermediate_grid%parents(1)%ptr => nest_grid intermediate_grid%num_parents = 1 intermediate_grid%is_intermediate = .TRUE. SELECT CASE ( model_data_order ) CASE ( DATA_ORDER_ZXY ) intermediate_grid%nids = nest_grid%sd32 ; intermediate_grid%njds = nest_grid%sd33 intermediate_grid%nide = nest_grid%ed32 ; intermediate_grid%njde = nest_grid%sd33 CASE ( DATA_ORDER_ZYX ) intermediate_grid%nids = nest_grid%sd33 ; intermediate_grid%njds = nest_grid%sd32 intermediate_grid%nide = nest_grid%ed33 ; intermediate_grid%njde = nest_grid%sd32 CASE ( DATA_ORDER_XYZ ) intermediate_grid%nids = nest_grid%sd31 ; intermediate_grid%njds = nest_grid%sd32 intermediate_grid%nide = nest_grid%ed31 ; intermediate_grid%njde = nest_grid%sd32 CASE ( DATA_ORDER_YXZ) intermediate_grid%nids = nest_grid%sd32 ; intermediate_grid%njds = nest_grid%sd31 intermediate_grid%nide = nest_grid%ed32 ; intermediate_grid%njde = nest_grid%sd31 CASE ( DATA_ORDER_XZY ) intermediate_grid%nids = nest_grid%sd31 ; intermediate_grid%njds = nest_grid%sd33 intermediate_grid%nide = nest_grid%ed31 ; intermediate_grid%njde = nest_grid%sd33 CASE ( DATA_ORDER_YZX ) intermediate_grid%nids = nest_grid%sd33 ; intermediate_grid%njds = nest_grid%sd31 intermediate_grid%nide = nest_grid%ed33 ; intermediate_grid%njde = nest_grid%sd31 END SELECT intermediate_grid%nids = ids intermediate_grid%nide = ide intermediate_grid%njds = jds intermediate_grid%njde = jde c_sm1x = 1 ; c_em1x = 1 ; c_sm2x = 1 ; c_em2x = 1 ; c_sm3x = 1 ; c_em3x = 1 c_sm1y = 1 ; c_em1y = 1 ; c_sm2y = 1 ; c_em2y = 1 ; c_sm3y = 1 ; c_em3y = 1 intermediate_grid%sm31x = c_sm1x intermediate_grid%em31x = c_em1x intermediate_grid%sm32x = c_sm2x intermediate_grid%em32x = c_em2x intermediate_grid%sm33x = c_sm3x intermediate_grid%em33x = c_em3x intermediate_grid%sm31y = c_sm1y intermediate_grid%em31y = c_em1y intermediate_grid%sm32y = c_sm2y intermediate_grid%em32y = c_em2y intermediate_grid%sm33y = c_sm3y intermediate_grid%em33y = c_em3y intermediate_grid%sd31 = c_sd1 intermediate_grid%ed31 = c_ed1 intermediate_grid%sp31 = c_sp1 intermediate_grid%ep31 = c_ep1 intermediate_grid%sm31 = c_sm1 intermediate_grid%em31 = c_em1 intermediate_grid%sd32 = c_sd2 intermediate_grid%ed32 = c_ed2 intermediate_grid%sp32 = c_sp2 intermediate_grid%ep32 = c_ep2 intermediate_grid%sm32 = c_sm2 intermediate_grid%em32 = c_em2 intermediate_grid%sd33 = c_sd3 intermediate_grid%ed33 = c_ed3 intermediate_grid%sp33 = c_sp3 intermediate_grid%ep33 = c_ep3 intermediate_grid%sm33 = c_sm3 intermediate_grid%em33 = c_em3 CALL med_add_config_info_to_grid ( intermediate_grid ) intermediate_grid%dx = parent%dx intermediate_grid%dy = parent%dy intermediate_grid%dt = parent%dt ENDIF RETURN END SUBROUTINE patch_domain_rsl_lite SUBROUTINE compute_memory_dims_rsl_lite ( & id , maxhalowidth , & shw , bdx, bdy , & ids, ide, jds, jde, kds, kde, & ims, ime, jms, jme, kms, kme, & imsx, imex, jmsx, jmex, kmsx, kmex, & imsy, imey, jmsy, jmey, kmsy, kmey, & ips, ipe, jps, jpe, kps, kpe, & ipsx, ipex, jpsx, jpex, kpsx, kpex, & ipsy, ipey, jpsy, jpey, kpsy, kpey ) IMPLICIT NONE INTEGER, INTENT(IN) :: id , maxhalowidth INTEGER, INTENT(IN) :: shw, bdx, bdy INTEGER, INTENT(IN) :: ids, ide, jds, jde, kds, kde INTEGER, INTENT(OUT) :: ims, ime, jms, jme, kms, kme INTEGER, INTENT(OUT) :: imsx, imex, jmsx, jmex, kmsx, kmex INTEGER, INTENT(OUT) :: imsy, imey, jmsy, jmey, kmsy, kmey INTEGER, INTENT(OUT) :: ips, ipe, jps, jpe, kps, kpe INTEGER, INTENT(OUT) :: ipsx, ipex, jpsx, jpex, kpsx, kpex INTEGER, INTENT(OUT) :: ipsy, ipey, jpsy, jpey, kpsy, kpey INTEGER Px, Py, P, i, j, k, ierr ips = -1 j = jds ierr = 0 DO i = ids, ide CALL task_for_point ( i, j, ids, ide, jds, jde, ntasks_x, ntasks_y, Px, Py, & 1, 1, ierr ) IF ( Px .EQ. mytask_x ) THEN ipe = i IF ( ips .EQ. -1 ) ips = i ENDIF ENDDO IF ( ierr .NE. 0 ) THEN CALL tfp_message("../frame/module_dm.F",726) ENDIF IF (ips .EQ. -1 ) THEN ipe = -1 ips = 0 ENDIF jps = -1 i = ids ierr = 0 DO j = jds, jde CALL task_for_point ( i, j, ids, ide, jds, jde, ntasks_x, ntasks_y, Px, Py, & 1, 1, ierr ) IF ( Py .EQ. mytask_y ) THEN jpe = j IF ( jps .EQ. -1 ) jps = j ENDIF ENDDO IF ( ierr .NE. 0 ) THEN CALL tfp_message("../frame/module_dm.F",745) ENDIF IF (jps .EQ. -1 ) THEN jpe = -1 jps = 0 ENDIF IF (ipe .EQ. -1 .or. jpe .EQ. -1) THEN ipe = -1 ips = 0 jpe = -1 jps = 0 ENDIF kpsx = -1 j = jds ; ierr = 0 DO k = kds, kde CALL task_for_point ( k, j, kds, kde, jds, jde, ntasks_x, ntasks_y, Px, Py, & 1, 1, ierr ) IF ( Px .EQ. mytask_x ) THEN kpex = k IF ( kpsx .EQ. -1 ) kpsx = k ENDIF ENDDO IF ( ierr .NE. 0 ) THEN CALL tfp_message("../frame/module_dm.F",816) ENDIF IF (kpsx .EQ. -1 ) THEN kpex = -1 kpsx = 0 ENDIF jpsx = -1 k = kds ; ierr = 0 DO j = jds, jde CALL task_for_point ( k, j, kds, kde, jds, jde, ntasks_x, ntasks_y, Px, Py, & 1, 1, ierr ) IF ( Py .EQ. mytask_y ) THEN jpex = j IF ( jpsx .EQ. -1 ) jpsx = j ENDIF ENDDO IF ( ierr .NE. 0 ) THEN CALL tfp_message("../frame/module_dm.F",838) ENDIF IF (jpsx .EQ. -1 ) THEN jpex = -1 jpsx = 0 ENDIF IF (ipex .EQ. -1 .or. jpex .EQ. -1) THEN ipex = -1 ipsx = 0 jpex = -1 jpsx = 0 ENDIF kpsy = kpsx kpey = kpex ipsy = -1 k = kds ; ierr = 0 DO i = ids, ide CALL task_for_point ( i, k, ids, ide, kds, kde, ntasks_y, ntasks_x, Py, Px, & 1, 1, ierr ) IF ( Py .EQ. mytask_y ) THEN ipey = i IF ( ipsy .EQ. -1 ) ipsy = i ENDIF ENDDO IF ( ierr .NE. 0 ) THEN CALL tfp_message("../frame/module_dm.F",874) ENDIF IF (ipsy .EQ. -1 ) THEN ipey = -1 ipsy = 0 ENDIF IF ( ips < ipe .and. jps < jpe ) THEN IF ( mytask_x .EQ. 0 ) THEN ips = ips - shw ipsy = ipsy - shw ENDIF IF ( mytask_x .EQ. ntasks_x-1 ) THEN ipe = ipe + shw ipey = ipey + shw ENDIF IF ( mytask_y .EQ. 0 ) THEN jps = jps - shw jpsx = jpsx - shw ENDIF IF ( mytask_y .EQ. ntasks_y-1 ) THEN jpe = jpe + shw jpex = jpex + shw ENDIF ENDIF kps = 1 kpe = kde-kds+1 kms = 1 kme = kpe kmsx = kpsx kmex = kpex kmsy = kpsy kmey = kpey IF ( kpsx .EQ. 0 .AND. kpex .EQ. -1 ) THEN kmsx = 0 kmex = 0 ENDIF IF ( kpsy .EQ. 0 .AND. kpey .EQ. -1 ) THEN kmsy = 0 kmey = 0 ENDIF IF ( (jps .EQ. 0 .AND. jpe .EQ. -1) .OR. (ips .EQ. 0 .AND. ipe .EQ. -1) ) THEN ims = 0 ime = 0 ELSE ims = max( ips - max(shw,maxhalowidth), ids - bdx ) - 1 ime = min( ipe + max(shw,maxhalowidth), ide + bdx ) + 1 ENDIF imsx = ids imex = ide ipsx = imsx ipex = imex IF ( ipsy .EQ. 0 .AND. ipey .EQ. -1 ) THEN imsy = 0 imey = 0 ELSE imsy = ipsy imey = ipey ENDIF IF ( (jps .EQ. 0 .AND. jpe .EQ. -1) .OR. (ips .EQ. 0 .AND. ipe .EQ. -1) ) THEN jms = 0 jme = 0 ELSE jms = max( jps - max(shw,maxhalowidth), jds - bdy ) - 1 jme = min( jpe + max(shw,maxhalowidth), jde + bdy ) + 1 ENDIF jmsx = jpsx jmex = jpex jmsy = jds jmey = jde IF ( jpsx .EQ. 0 .AND. jpex .EQ. -1 ) THEN jmsx = 0 jmex = 0 ELSE jpsy = jmsy jpey = jmey ENDIF END SUBROUTINE compute_memory_dims_rsl_lite INTEGER function getrealmpitype() IMPLICIT NONE INCLUDE 'mpif.h' INTEGER rtypesize, dtypesize, ierr CALL mpi_type_size ( MPI_REAL, rtypesize, ierr ) CALL mpi_type_size ( MPI_DOUBLE_PRECISION, dtypesize, ierr ) IF ( 4 .EQ. rtypesize ) THEN getrealmpitype = MPI_REAL ELSE IF ( 4 .EQ. dtypesize ) THEN getrealmpitype = MPI_DOUBLE_PRECISION ELSE CALL wrf_error_fatal3("",963,& 'RWORDSIZE or DWORDSIZE does not match any MPI type' ) ENDIF RETURN END FUNCTION getrealmpitype REAL FUNCTION wrf_dm_max_real ( inval ) IMPLICIT NONE INCLUDE 'mpif.h' REAL inval, retval INTEGER ierr CALL mpi_allreduce ( inval, retval , 1, getrealmpitype(), MPI_MAX, local_communicator, ierr ) wrf_dm_max_real = retval END FUNCTION wrf_dm_max_real REAL FUNCTION wrf_dm_min_real ( inval ) IMPLICIT NONE INCLUDE 'mpif.h' REAL inval, retval INTEGER ierr CALL mpi_allreduce ( inval, retval , 1, getrealmpitype(), MPI_MIN, local_communicator, ierr ) wrf_dm_min_real = retval END FUNCTION wrf_dm_min_real SUBROUTINE wrf_dm_min_reals ( inval, retval, n ) IMPLICIT NONE INTEGER n REAL inval(*) REAL retval(*) INCLUDE 'mpif.h' INTEGER ierr CALL mpi_allreduce ( inval, retval , n, getrealmpitype(), MPI_MIN, local_communicator, ierr ) END SUBROUTINE wrf_dm_min_reals REAL FUNCTION wrf_dm_sum_real ( inval ) IMPLICIT NONE INCLUDE 'mpif.h' REAL inval, retval INTEGER ierr CALL mpi_allreduce ( inval, retval , 1, getrealmpitype(), MPI_SUM, local_communicator, ierr ) wrf_dm_sum_real = retval END FUNCTION wrf_dm_sum_real SUBROUTINE wrf_dm_sum_reals (inval, retval) IMPLICIT NONE REAL, INTENT(IN) :: inval(:) REAL, INTENT(OUT) :: retval(:) INCLUDE 'mpif.h' INTEGER ierr CALL mpi_allreduce ( inval, retval, SIZE(inval), getrealmpitype(), MPI_SUM, local_communicator, ierr ) END SUBROUTINE wrf_dm_sum_reals INTEGER FUNCTION wrf_dm_sum_integer ( inval ) IMPLICIT NONE INCLUDE 'mpif.h' INTEGER inval, retval INTEGER ierr CALL mpi_allreduce ( inval, retval , 1, MPI_INTEGER, MPI_SUM, local_communicator, ierr ) wrf_dm_sum_integer = retval END FUNCTION wrf_dm_sum_integer INTEGER FUNCTION wrf_dm_bxor_integer ( inval ) IMPLICIT NONE INCLUDE 'mpif.h' INTEGER inval, retval INTEGER ierr CALL mpi_allreduce ( inval, retval , 1, MPI_INTEGER, MPI_BXOR, local_communicator, ierr ) wrf_dm_bxor_integer = retval END FUNCTION wrf_dm_bxor_integer SUBROUTINE wrf_dm_maxval_real ( val, idex, jdex ) IMPLICIT NONE INCLUDE 'mpif.h' REAL val, val_all( ntasks ) INTEGER idex, jdex, ierr INTEGER dex(2) INTEGER dex_all (2,ntasks) INTEGER i dex(1) = idex ; dex(2) = jdex CALL mpi_allgather ( dex, 2, MPI_INTEGER, dex_all , 2, MPI_INTEGER, local_communicator, ierr ) CALL mpi_allgather ( val, 1, getrealmpitype(), val_all , 1, getrealmpitype(), local_communicator, ierr ) val = val_all(1) idex = dex_all(1,1) ; jdex = dex_all(2,1) DO i = 2, ntasks IF ( val_all(i) .GT. val ) THEN val = val_all(i) idex = dex_all(1,i) jdex = dex_all(2,i) ENDIF ENDDO END SUBROUTINE wrf_dm_maxval_real SUBROUTINE wrf_dm_maxval_doubleprecision ( val, idex, jdex ) IMPLICIT NONE INCLUDE 'mpif.h' DOUBLE PRECISION val, val_all( ntasks ) INTEGER idex, jdex, ierr INTEGER dex(2) INTEGER dex_all (2,ntasks) INTEGER i dex(1) = idex ; dex(2) = jdex CALL mpi_allgather ( dex, 2, MPI_INTEGER, dex_all , 2, MPI_INTEGER, local_communicator, ierr ) CALL mpi_allgather ( val, 1, MPI_DOUBLE_PRECISION, val_all , 1, MPI_DOUBLE_PRECISION, local_communicator, ierr ) val = val_all(1) idex = dex_all(1,1) ; jdex = dex_all(2,1) DO i = 2, ntasks IF ( val_all(i) .GT. val ) THEN val = val_all(i) idex = dex_all(1,i) jdex = dex_all(2,i) ENDIF ENDDO END SUBROUTINE wrf_dm_maxval_doubleprecision SUBROUTINE wrf_dm_maxval_integer ( val, idex, jdex ) IMPLICIT NONE INCLUDE 'mpif.h' INTEGER val, val_all( ntasks ) INTEGER idex, jdex, ierr INTEGER dex(2) INTEGER dex_all (2,ntasks) INTEGER i dex(1) = idex ; dex(2) = jdex CALL mpi_allgather ( dex, 2, MPI_INTEGER, dex_all , 2, MPI_INTEGER, local_communicator, ierr ) CALL mpi_allgather ( val, 1, MPI_INTEGER, val_all , 1, MPI_INTEGER, local_communicator, ierr ) val = val_all(1) idex = dex_all(1,1) ; jdex = dex_all(2,1) DO i = 2, ntasks IF ( val_all(i) .GT. val ) THEN val = val_all(i) idex = dex_all(1,i) jdex = dex_all(2,i) ENDIF ENDDO END SUBROUTINE wrf_dm_maxval_integer SUBROUTINE wrf_dm_minval_real ( val, idex, jdex ) IMPLICIT NONE REAL val, val_all( ntasks ) INTEGER idex, jdex, ierr INTEGER dex(2) INTEGER dex_all (2,ntasks) INTEGER i, comm INCLUDE 'mpif.h' CALL wrf_get_dm_communicator ( comm ) dex(1) = idex ; dex(2) = jdex CALL mpi_allgather ( dex, 2, MPI_INTEGER, dex_all , 2, MPI_INTEGER, comm, ierr ) CALL mpi_allgather ( val, 1, MPI_REAL, val_all , 1, MPI_REAL, comm, ierr ) val = val_all(1) idex = dex_all(1,1) ; jdex = dex_all(2,1) DO i = 2, ntasks IF ( val_all(i) .LT. val ) THEN val = val_all(i) idex = dex_all(1,i) jdex = dex_all(2,i) ENDIF ENDDO END SUBROUTINE wrf_dm_minval_real SUBROUTINE wrf_dm_minval_doubleprecision ( val, idex, jdex ) IMPLICIT NONE DOUBLE PRECISION val, val_all( ntasks ) INTEGER idex, jdex, ierr INTEGER dex(2) INTEGER dex_all (2,ntasks) INTEGER i, comm INCLUDE 'mpif.h' CALL wrf_get_dm_communicator ( comm ) dex(1) = idex ; dex(2) = jdex CALL mpi_allgather ( dex, 2, MPI_INTEGER, dex_all , 2, MPI_INTEGER, comm, ierr ) CALL mpi_allgather ( val, 1, MPI_DOUBLE_PRECISION, val_all , 1, MPI_DOUBLE_PRECISION, comm, ierr ) val = val_all(1) idex = dex_all(1,1) ; jdex = dex_all(2,1) DO i = 2, ntasks IF ( val_all(i) .LT. val ) THEN val = val_all(i) idex = dex_all(1,i) jdex = dex_all(2,i) ENDIF ENDDO END SUBROUTINE wrf_dm_minval_doubleprecision SUBROUTINE wrf_dm_minval_integer ( val, idex, jdex ) IMPLICIT NONE INTEGER val, val_all( ntasks ) INTEGER idex, jdex, ierr INTEGER dex(2) INTEGER dex_all (2,ntasks) INTEGER i, comm INCLUDE 'mpif.h' CALL wrf_get_dm_communicator ( comm ) dex(1) = idex ; dex(2) = jdex CALL mpi_allgather ( dex, 2, MPI_INTEGER, dex_all , 2, MPI_INTEGER, comm, ierr ) CALL mpi_allgather ( val, 1, MPI_INTEGER, val_all , 1, MPI_INTEGER, comm, ierr ) val = val_all(1) idex = dex_all(1,1) ; jdex = dex_all(2,1) DO i = 2, ntasks IF ( val_all(i) .LT. val ) THEN val = val_all(i) idex = dex_all(1,i) jdex = dex_all(2,i) ENDIF ENDDO END SUBROUTINE wrf_dm_minval_integer SUBROUTINE split_communicator IMPLICIT NONE INCLUDE 'mpif.h' LOGICAL mpi_inited INTEGER mpi_comm_here, mpi_comm_local, comdup, mytask, ntasks, ierr, io_status INTEGER i, j INTEGER, ALLOCATABLE :: icolor(:) INTEGER tasks_per_split NAMELIST /namelist_split/ tasks_per_split CALL MPI_INITIALIZED( mpi_inited, ierr ) IF ( .NOT. mpi_inited ) THEN CALL mpi_init ( ierr ) mpi_comm_here = MPI_COMM_WORLD CALL wrf_set_dm_communicator( mpi_comm_here ) ENDIF CALL wrf_get_dm_communicator( mpi_comm_here ) CALL wrf_termio_dup( mpi_comm_here ) CALL MPI_Comm_rank ( mpi_comm_here, mytask, ierr ) ; CALL mpi_comm_size ( mpi_comm_here, ntasks, ierr ) ; IF ( mytask .EQ. 0 ) THEN OPEN ( unit=27, file="namelist.input", form="formatted", status="old" ) tasks_per_split = ntasks READ ( 27 , NML = namelist_split, IOSTAT=io_status ) CLOSE ( 27 ) ENDIF CALL mpi_bcast( io_status, 1 , MPI_INTEGER , 0 , mpi_comm_here, ierr ) IF ( io_status .NE. 0 ) THEN RETURN ENDIF CALL mpi_bcast( tasks_per_split, 1 , MPI_INTEGER , 0 , mpi_comm_here, ierr ) IF ( tasks_per_split .GT. ntasks .OR. tasks_per_split .LE. 0 ) RETURN IF ( mod( ntasks, tasks_per_split ) .NE. 0 ) THEN CALL wrf_message( 'WARNING: tasks_per_split does not evenly divide ntasks. Some tasks will be wasted.' ) ENDIF ALLOCATE( icolor(ntasks) ) j = 0 DO WHILE ( j .LT. ntasks / tasks_per_split ) DO i = 1, tasks_per_split icolor( i + j * tasks_per_split ) = j ENDDO j = j + 1 ENDDO CALL MPI_Comm_dup(mpi_comm_here,comdup,ierr) CALL MPI_Comm_split(comdup,icolor(mytask+1),mytask,mpi_comm_local,ierr) CALL wrf_set_dm_communicator( mpi_comm_local ) DEALLOCATE( icolor ) END SUBROUTINE split_communicator SUBROUTINE init_module_dm IMPLICIT NONE INTEGER mpi_comm_local, mpi_comm_here, ierr, mytask, nproc INCLUDE 'mpif.h' LOGICAL mpi_inited CALL mpi_initialized( mpi_inited, ierr ) IF ( .NOT. mpi_inited ) THEN CALL mpi_init ( ierr ) mpi_comm_here = MPI_COMM_WORLD CALL wrf_set_dm_communicator ( mpi_comm_here ) ENDIF CALL wrf_get_dm_communicator( mpi_comm_local ) CALL wrf_termio_dup( mpi_comm_local ) END SUBROUTINE init_module_dm SUBROUTINE wrf_dm_move_nest ( parent, nest, dx, dy ) USE module_domain, ONLY : domain IMPLICIT NONE TYPE (domain), INTENT(INOUT) :: parent, nest INTEGER, INTENT(IN) :: dx,dy RETURN END SUBROUTINE wrf_dm_move_nest SUBROUTINE get_full_obs_vector( nsta, nerrf, niobf, & mp_local_uobmask, & mp_local_vobmask, & mp_local_cobmask, errf ) INTEGER, INTENT(IN) :: nsta INTEGER, INTENT(IN) :: nerrf INTEGER, INTENT(IN) :: niobf LOGICAL, INTENT(IN) :: MP_LOCAL_UOBMASK(NIOBF) LOGICAL, INTENT(IN) :: MP_LOCAL_VOBMASK(NIOBF) LOGICAL, INTENT(IN) :: MP_LOCAL_COBMASK(NIOBF) REAL, INTENT(INOUT) :: errf(nerrf, niobf) INCLUDE 'mpif.h' integer i, n, nlocal_dot, nlocal_crs REAL UVT_BUFFER(NIOBF) REAL QRK_BUFFER(NIOBF) REAL SFP_BUFFER(NIOBF) REAL PBL_BUFFER(NIOBF) INTEGER N_BUFFER(NIOBF) REAL FULL_BUFFER(NIOBF) INTEGER IFULL_BUFFER(NIOBF) INTEGER IDISPLACEMENT(1024) INTEGER ICOUNT(1024) INTEGER :: MPI_COMM_COMP INTEGER :: NPROCS INTEGER :: IERR CALL WRF_GET_DM_COMMUNICATOR(MPI_COMM_COMP) CALL MPI_COMM_SIZE( MPI_COMM_COMP, NPROCS, IERR ) NLOCAL_DOT = 0 DO N = 1, NSTA IF ( MP_LOCAL_UOBMASK(N) ) THEN NLOCAL_DOT = NLOCAL_DOT + 1 UVT_BUFFER(NLOCAL_DOT) = ERRF(1,N) SFP_BUFFER(NLOCAL_DOT) = ERRF(7,N) QRK_BUFFER(NLOCAL_DOT) = ERRF(9,N) N_BUFFER(NLOCAL_DOT) = N ENDIF ENDDO CALL MPI_ALLGATHER(NLOCAL_DOT,1,MPI_INTEGER, & ICOUNT,1,MPI_INTEGER, & MPI_COMM_COMP,IERR) I = 1 IDISPLACEMENT(1) = 0 DO I = 2, NPROCS IDISPLACEMENT(I) = IDISPLACEMENT(I-1) + ICOUNT(I-1) ENDDO CALL MPI_ALLGATHERV( N_BUFFER, NLOCAL_DOT, MPI_INTEGER, & IFULL_BUFFER, ICOUNT, IDISPLACEMENT, & MPI_INTEGER, MPI_COMM_COMP, IERR) CALL MPI_ALLGATHERV( UVT_BUFFER, NLOCAL_DOT, MPI_REAL, & FULL_BUFFER, ICOUNT, IDISPLACEMENT, & MPI_REAL, MPI_COMM_COMP, IERR) DO N = 1, NSTA ERRF(1,IFULL_BUFFER(N)) = FULL_BUFFER(N) ENDDO CALL MPI_ALLGATHERV( SFP_BUFFER, NLOCAL_DOT, MPI_REAL, & FULL_BUFFER, ICOUNT, IDISPLACEMENT, & MPI_REAL, MPI_COMM_COMP, IERR) DO N = 1, NSTA ERRF(7,IFULL_BUFFER(N)) = FULL_BUFFER(N) ENDDO CALL MPI_ALLGATHERV( QRK_BUFFER, NLOCAL_DOT, MPI_REAL, & FULL_BUFFER, ICOUNT, IDISPLACEMENT, & MPI_REAL, MPI_COMM_COMP, IERR) DO N = 1, NSTA ERRF(9,IFULL_BUFFER(N)) = FULL_BUFFER(N) ENDDO NLOCAL_DOT = 0 DO N = 1, NSTA IF ( MP_LOCAL_VOBMASK(N) ) THEN NLOCAL_DOT = NLOCAL_DOT + 1 UVT_BUFFER(NLOCAL_DOT) = ERRF(2,N) SFP_BUFFER(NLOCAL_DOT) = ERRF(8,N) N_BUFFER(NLOCAL_DOT) = N ENDIF ENDDO CALL MPI_ALLGATHER(NLOCAL_DOT,1,MPI_INTEGER, & ICOUNT,1,MPI_INTEGER, & MPI_COMM_COMP,IERR) I = 1 IDISPLACEMENT(1) = 0 DO I = 2, NPROCS IDISPLACEMENT(I) = IDISPLACEMENT(I-1) + ICOUNT(I-1) ENDDO CALL MPI_ALLGATHERV( N_BUFFER, NLOCAL_DOT, MPI_INTEGER, & IFULL_BUFFER, ICOUNT, IDISPLACEMENT, & MPI_INTEGER, MPI_COMM_COMP, IERR) CALL MPI_ALLGATHERV( UVT_BUFFER, NLOCAL_DOT, MPI_REAL, & FULL_BUFFER, ICOUNT, IDISPLACEMENT, & MPI_REAL, MPI_COMM_COMP, IERR) DO N = 1, NSTA ERRF(2,IFULL_BUFFER(N)) = FULL_BUFFER(N) ENDDO CALL MPI_ALLGATHERV( SFP_BUFFER, NLOCAL_DOT, MPI_REAL, & FULL_BUFFER, ICOUNT, IDISPLACEMENT, & MPI_REAL, MPI_COMM_COMP, IERR) DO N = 1, NSTA ERRF(8,IFULL_BUFFER(N)) = FULL_BUFFER(N) ENDDO NLOCAL_CRS = 0 DO N = 1, NSTA IF ( MP_LOCAL_COBMASK(N) ) THEN NLOCAL_CRS = NLOCAL_CRS + 1 UVT_BUFFER(NLOCAL_CRS) = ERRF(3,N) QRK_BUFFER(NLOCAL_CRS) = ERRF(4,N) PBL_BUFFER(NLOCAL_CRS) = ERRF(5,N) SFP_BUFFER(NLOCAL_CRS) = ERRF(6,N) N_BUFFER(NLOCAL_CRS) = N ENDIF ENDDO CALL MPI_ALLGATHER(NLOCAL_CRS,1,MPI_INTEGER, & ICOUNT,1,MPI_INTEGER, & MPI_COMM_COMP,IERR) IDISPLACEMENT(1) = 0 DO I = 2, NPROCS IDISPLACEMENT(I) = IDISPLACEMENT(I-1) + ICOUNT(I-1) ENDDO CALL MPI_ALLGATHERV( N_BUFFER, NLOCAL_CRS, MPI_INTEGER, & IFULL_BUFFER, ICOUNT, IDISPLACEMENT, & MPI_INTEGER, MPI_COMM_COMP, IERR) CALL MPI_ALLGATHERV( UVT_BUFFER, NLOCAL_CRS, MPI_REAL, & FULL_BUFFER, ICOUNT, IDISPLACEMENT, & MPI_REAL, MPI_COMM_COMP, IERR) DO N = 1, NSTA ERRF(3,IFULL_BUFFER(N)) = FULL_BUFFER(N) ENDDO CALL MPI_ALLGATHERV( QRK_BUFFER, NLOCAL_CRS, MPI_REAL, & FULL_BUFFER, ICOUNT, IDISPLACEMENT, & MPI_REAL, MPI_COMM_COMP, IERR) DO N = 1, NSTA ERRF(4,IFULL_BUFFER(N)) = FULL_BUFFER(N) ENDDO CALL MPI_ALLGATHERV( PBL_BUFFER, NLOCAL_CRS, MPI_REAL, & FULL_BUFFER, ICOUNT, IDISPLACEMENT, & MPI_REAL, MPI_COMM_COMP, IERR) DO N = 1, NSTA ERRF(5,IFULL_BUFFER(N)) = FULL_BUFFER(N) ENDDO CALL MPI_ALLGATHERV( SFP_BUFFER, NLOCAL_CRS, MPI_REAL, & FULL_BUFFER, ICOUNT, IDISPLACEMENT, & MPI_REAL, MPI_COMM_COMP, IERR) DO N = 1, NSTA ERRF(6,IFULL_BUFFER(N)) = FULL_BUFFER(N) ENDDO END SUBROUTINE get_full_obs_vector SUBROUTINE wrf_dm_maxtile_real ( val , tile) IMPLICIT NONE REAL val, val_all( ntasks ) INTEGER tile INTEGER ierr INTEGER i, comm INCLUDE 'mpif.h' CALL wrf_get_dm_communicator ( comm ) CALL mpi_allgather ( val, 1, getrealmpitype(), val_all , 1, getrealmpitype(), comm, ierr ) val = val_all(1) tile = 1 DO i = 2, ntasks IF ( val_all(i) .GT. val ) THEN tile = i val = val_all(i) ENDIF ENDDO END SUBROUTINE wrf_dm_maxtile_real SUBROUTINE wrf_dm_mintile_real ( val , tile) IMPLICIT NONE REAL val, val_all( ntasks ) INTEGER tile INTEGER ierr INTEGER i, comm INCLUDE 'mpif.h' CALL wrf_get_dm_communicator ( comm ) CALL mpi_allgather ( val, 1, getrealmpitype(), val_all , 1, getrealmpitype(), comm, ierr ) val = val_all(1) tile = 1 DO i = 2, ntasks IF ( val_all(i) .LT. val ) THEN tile = i val = val_all(i) ENDIF ENDDO END SUBROUTINE wrf_dm_mintile_real SUBROUTINE wrf_dm_mintile_double ( val , tile) IMPLICIT NONE DOUBLE PRECISION val, val_all( ntasks ) INTEGER tile INTEGER ierr INTEGER i, comm INCLUDE 'mpif.h' CALL wrf_get_dm_communicator ( comm ) CALL mpi_allgather ( val, 1, MPI_DOUBLE_PRECISION, val_all , 1, MPI_DOUBLE_PRECISION, comm, ierr ) val = val_all(1) tile = 1 DO i = 2, ntasks IF ( val_all(i) .LT. val ) THEN tile = i val = val_all(i) ENDIF ENDDO END SUBROUTINE wrf_dm_mintile_double SUBROUTINE wrf_dm_tile_val_int ( val , tile) IMPLICIT NONE INTEGER val, val_all( ntasks ) INTEGER tile INTEGER ierr INTEGER i, comm INCLUDE 'mpif.h' CALL wrf_get_dm_communicator ( comm ) CALL mpi_allgather ( val, 1, MPI_INTEGER, val_all , 1, MPI_INTEGER, comm, ierr ) val = val_all(tile) END SUBROUTINE wrf_dm_tile_val_int SUBROUTINE wrf_get_hostname ( str ) CHARACTER*(*) str CHARACTER tmp(512) INTEGER i , n, cs CALL rsl_lite_get_hostname( tmp, 512, n, cs ) DO i = 1, n str(i:i) = tmp(i) ENDDO RETURN END SUBROUTINE wrf_get_hostname SUBROUTINE wrf_get_hostid ( hostid ) INTEGER hostid CHARACTER tmp(512) INTEGER i, sz, n, cs CALL rsl_lite_get_hostname( tmp, 512, n, cs ) hostid = cs RETURN END SUBROUTINE wrf_get_hostid END MODULE module_dm SUBROUTINE wrf_dm_patch_domain ( id , domdesc , parent_id , parent_domdesc , & sd1 , ed1 , sp1 , ep1 , sm1 , em1 , & sd2 , ed2 , sp2 , ep2 , sm2 , em2 , & sd3 , ed3 , sp3 , ep3 , sm3 , em3 , & sp1x , ep1x , sm1x , em1x , & sp2x , ep2x , sm2x , em2x , & sp3x , ep3x , sm3x , em3x , & sp1y , ep1y , sm1y , em1y , & sp2y , ep2y , sm2y , em2y , & sp3y , ep3y , sm3y , em3y , & bdx , bdy ) USE module_domain, ONLY : domain, head_grid, find_grid_by_id USE module_dm, ONLY : patch_domain_rsl_lite IMPLICIT NONE INTEGER, INTENT(IN) :: sd1 , ed1 , sd2 , ed2 , sd3 , ed3 , bdx , bdy INTEGER, INTENT(OUT) :: sp1 , ep1 , sp2 , ep2 , sp3 , ep3 , & sm1 , em1 , sm2 , em2 , sm3 , em3 INTEGER :: sp1x , ep1x , sp2x , ep2x , sp3x , ep3x , & sm1x , em1x , sm2x , em2x , sm3x , em3x INTEGER :: sp1y , ep1y , sp2y , ep2y , sp3y , ep3y , & sm1y , em1y , sm2y , em2y , sm3y , em3y INTEGER, INTENT(INOUT):: id , domdesc , parent_id , parent_domdesc TYPE(domain), POINTER :: parent TYPE(domain), POINTER :: grid_ptr NULLIFY( parent ) grid_ptr => head_grid CALL find_grid_by_id( parent_id , grid_ptr , parent ) CALL patch_domain_rsl_lite ( id , parent, parent_id , & sd1 , ed1 , sp1 , ep1 , sm1 , em1 , & sd2 , ed2 , sp2 , ep2 , sm2 , em2 , & sd3 , ed3 , sp3 , ep3 , sm3 , em3 , & sp1x , ep1x , sm1x , em1x , & sp2x , ep2x , sm2x , em2x , & sp3x , ep3x , sm3x , em3x , & sp1y , ep1y , sm1y , em1y , & sp2y , ep2y , sm2y , em2y , & sp3y , ep3y , sm3y , em3y , & bdx , bdy ) RETURN END SUBROUTINE wrf_dm_patch_domain SUBROUTINE wrf_termio_dup( comm ) IMPLICIT NONE INTEGER, INTENT(IN) :: comm INTEGER mytask, ntasks INTEGER ierr INCLUDE 'mpif.h' CALL mpi_comm_size(comm, ntasks, ierr ) CALL mpi_comm_rank(comm, mytask, ierr ) write(0,*)'starting wrf task ',mytask,' of ',ntasks CALL rsl_error_dup1( mytask ) END SUBROUTINE wrf_termio_dup SUBROUTINE wrf_get_myproc( myproc ) USE module_dm , ONLY : mytask IMPLICIT NONE INTEGER myproc myproc = mytask RETURN END SUBROUTINE wrf_get_myproc SUBROUTINE wrf_get_nproc( nproc ) USE module_dm , ONLY : ntasks IMPLICIT NONE INTEGER nproc nproc = ntasks RETURN END SUBROUTINE wrf_get_nproc SUBROUTINE wrf_get_nprocx( nprocx ) USE module_dm , ONLY : ntasks_x IMPLICIT NONE INTEGER nprocx nprocx = ntasks_x RETURN END SUBROUTINE wrf_get_nprocx SUBROUTINE wrf_get_nprocy( nprocy ) USE module_dm , ONLY : ntasks_y IMPLICIT NONE INTEGER nprocy nprocy = ntasks_y RETURN END SUBROUTINE wrf_get_nprocy SUBROUTINE wrf_dm_bcast_bytes ( buf , size ) USE module_dm , ONLY : local_communicator IMPLICIT NONE INCLUDE 'mpif.h' INTEGER size INTEGER*1 BUF(size) CALL BYTE_BCAST ( buf , size, local_communicator ) RETURN END SUBROUTINE wrf_dm_bcast_bytes SUBROUTINE wrf_dm_bcast_string( BUF, N1 ) IMPLICIT NONE INTEGER n1 CHARACTER*(*) buf INTEGER ibuf(256),i,n CHARACTER*256 tstr n = n1 CALL wrf_dm_bcast_integer( n , 1 ) IF (n .GT. 256) n = 256 IF (n .GT. 0 ) then DO i = 1, n ibuf(I) = ichar(buf(I:I)) ENDDO CALL wrf_dm_bcast_integer( ibuf, n ) buf = '' DO i = 1, n buf(i:i) = char(ibuf(i)) ENDDO ENDIF RETURN END SUBROUTINE wrf_dm_bcast_string SUBROUTINE wrf_dm_bcast_integer( BUF, N1 ) IMPLICIT NONE INTEGER n1 INTEGER buf(*) CALL wrf_dm_bcast_bytes ( BUF , N1 * 4 ) RETURN END SUBROUTINE wrf_dm_bcast_integer SUBROUTINE wrf_dm_bcast_double( BUF, N1 ) IMPLICIT NONE INTEGER n1 REAL buf(*) CALL wrf_dm_bcast_bytes ( BUF , N1 * 8 ) RETURN END SUBROUTINE wrf_dm_bcast_double SUBROUTINE wrf_dm_bcast_real( BUF, N1 ) IMPLICIT NONE INTEGER n1 REAL buf(*) CALL wrf_dm_bcast_bytes ( BUF , N1 * 4 ) RETURN END SUBROUTINE wrf_dm_bcast_real SUBROUTINE wrf_dm_bcast_logical( BUF, N1 ) IMPLICIT NONE INTEGER n1 LOGICAL buf(*) CALL wrf_dm_bcast_bytes ( BUF , N1 * 4 ) RETURN END SUBROUTINE wrf_dm_bcast_logical SUBROUTINE write_68( grid, v , s , & ids, ide, jds, jde, kds, kde, & ims, ime, jms, jme, kms, kme, & its, ite, jts, jte, kts, kte ) USE module_domain, ONLY : domain IMPLICIT NONE TYPE(domain) , INTENT (INOUT) :: grid CHARACTER *(*) s INTEGER ids, ide, jds, jde, kds, kde, & ims, ime, jms, jme, kms, kme, & its, ite, jts, jte, kts, kte REAL, DIMENSION( ims:ime , kms:kme, jms:jme ) :: v INTEGER i,j,k,ierr logical, external :: wrf_dm_on_monitor real globbuf( ids:ide, kds:kde, jds:jde ) character*3 ord, stag if ( kds == kde ) then ord = 'xy' stag = 'xy' CALL wrf_patch_to_global_real ( v, globbuf, grid%domdesc, stag, ord, & ids, ide, jds, jde, kds, kde, & ims, ime, jms, jme, kms, kme, & its, ite, jts, jte, kts, kte ) else stag = 'xyz' ord = 'xzy' CALL wrf_patch_to_global_real ( v, globbuf, grid%domdesc, stag, ord, & ids, ide, kds, kde, jds, jde, & ims, ime, kms, kme, jms, jme, & its, ite, kts, kte, jts, jte ) endif if ( wrf_dm_on_monitor() ) THEN WRITE(68,*) ide-ids+1, jde-jds+1 , s DO j = jds, jde DO i = ids, ide WRITE(68,*) globbuf(i,1,j) ENDDO ENDDO endif RETURN END SUBROUTINE wrf_abort IMPLICIT NONE INCLUDE 'mpif.h' INTEGER ierr CALL mpi_abort(MPI_COMM_WORLD,1,ierr) END SUBROUTINE wrf_abort SUBROUTINE wrf_dm_shutdown IMPLICIT NONE INTEGER ierr CALL MPI_FINALIZE( ierr ) RETURN END SUBROUTINE wrf_dm_shutdown LOGICAL FUNCTION wrf_dm_on_monitor() IMPLICIT NONE INCLUDE 'mpif.h' INTEGER tsk, ierr, mpi_comm_local CALL wrf_get_dm_communicator( mpi_comm_local ) CALL mpi_comm_rank ( mpi_comm_local, tsk , ierr ) wrf_dm_on_monitor = tsk .EQ. 0 RETURN END FUNCTION wrf_dm_on_monitor SUBROUTINE rsl_comm_iter_init(shw,ps,pe) INTEGER shw, ps, pe INTEGER iter, plus_send_start, plus_recv_start, & minus_send_start, minus_recv_start COMMON /rcii/ iter, plus_send_start, plus_recv_start, & minus_send_start, minus_recv_start iter = 0 minus_send_start = ps minus_recv_start = ps-1 plus_send_start = pe plus_recv_start = pe+1 END SUBROUTINE rsl_comm_iter_init LOGICAL FUNCTION rsl_comm_iter ( id , is_intermediate, & shw , xy , ds, de_in, ps, pe, nds,nde, & sendbeg_m, sendw_m, sendbeg_p, sendw_p, & recvbeg_m, recvw_m, recvbeg_p, recvw_p ) USE module_dm, ONLY : ntasks_x, ntasks_y, mytask_x, mytask_y IMPLICIT NONE INTEGER, INTENT(IN) :: id,shw,xy,ds,de_in,ps,pe,nds,nde LOGICAL, INTENT(IN) :: is_intermediate INTEGER, INTENT(OUT) :: sendbeg_m, sendw_m, sendbeg_p, sendw_p INTEGER, INTENT(OUT) :: recvbeg_m, recvw_m, recvbeg_p, recvw_p INTEGER k, kn, ni, nj, de, Px, Py, nt, me, lb, ub, ierr LOGICAL went INTEGER iter, plus_send_start, plus_recv_start, & minus_send_start, minus_recv_start INTEGER parent_grid_ratio, parent_start COMMON /rcii/ iter, plus_send_start, plus_recv_start, & minus_send_start, minus_recv_start de = de_in IF ( xy .EQ. 1 ) THEN nt = ntasks_x me = mytask_x IF ( is_intermediate ) THEN CALL nl_get_i_parent_start(id,parent_start) CALL nl_get_parent_grid_ratio(id,parent_grid_ratio) ENDIF ELSE nt = ntasks_y me = mytask_y IF ( is_intermediate ) THEN CALL nl_get_j_parent_start(id,parent_start) CALL nl_get_parent_grid_ratio(id,parent_grid_ratio) ENDIF ENDIF iter = iter + 1 went = .FALSE. sendw_m = 0 sendbeg_m = 1 IF ( me .GT. 0 ) THEN lb = minus_send_start sendbeg_m = lb-ps+1 DO k = lb,ps+shw-1 went = .TRUE. IF ( is_intermediate ) THEN kn = ( k - parent_start ) * parent_grid_ratio + 1 + 1 ; CALL task_for_point (kn,1,nds,nde,1,1,nt,1,Px,Py,1,1,ierr) ELSE CALL task_for_point (k,1,ds,de,1,1,nt,1,Px,Py,1,1,ierr) ENDIF IF ( Px .NE. me+(iter-1) ) THEN exit ENDIF minus_send_start = minus_send_start+1 sendw_m = sendw_m + 1 ENDDO ENDIF recvw_m = 0 recvbeg_m = 1 IF ( me .GT. 0 ) THEN ub = minus_recv_start recvbeg_m = ps - ub DO k = minus_recv_start,ps-shw,-1 went = .TRUE. IF ( is_intermediate ) THEN kn = ( k - parent_start ) * parent_grid_ratio + 1 + 1 ; CALL task_for_point (kn,1,nds,nde,1,1,nt,1,Px,Py,1,1,ierr) ELSE CALL task_for_point (k,1,ds,de,1,1,nt,1,Px,Py,1,1,ierr) ENDIF IF ( Px .NE. me-iter ) THEN exit ENDIF minus_recv_start = minus_recv_start-1 recvw_m = recvw_m + 1 ENDDO ENDIF sendw_p = 0 sendbeg_p = 1 IF ( me .LT. nt-1 ) THEN ub = plus_send_start sendbeg_p = pe - ub + 1 DO k = ub,pe-shw+1,-1 went = .TRUE. IF ( is_intermediate ) THEN kn = ( k - parent_start ) * parent_grid_ratio + 1 + 1 ; CALL task_for_point (kn,1,nds,nde,1,1,nt,1,Px,Py,1,1,ierr) ELSE CALL task_for_point (k,1,ds,de,1,1,nt,1,Px,Py,1,1,ierr) ENDIF IF ( Px .NE. me-(iter-1) ) THEN exit ENDIF plus_send_start = plus_send_start - 1 sendw_p = sendw_p + 1 ENDDO ENDIF recvw_p = 0 recvbeg_p = 1 IF ( me .LT. nt-1 ) THEN lb = plus_recv_start recvbeg_p = lb - pe DO k = lb,pe+shw went = .TRUE. IF ( is_intermediate ) THEN kn = ( k - parent_start ) * parent_grid_ratio + 1 + 1 ; CALL task_for_point (kn,1,nds,nde,1,1,nt,1,Px,Py,1,1,ierr) ELSE CALL task_for_point (k,1,ds,de,1,1,nt,1,Px,Py,1,1,ierr) ENDIF IF ( Px .NE. me+iter ) THEN exit ENDIF plus_recv_start = plus_recv_start + 1 recvw_p = recvw_p + 1 ENDDO ENDIF rsl_comm_iter = went END FUNCTION rsl_comm_iter INTEGER FUNCTION wrf_dm_monitor_rank() IMPLICIT NONE wrf_dm_monitor_rank = 0 RETURN END FUNCTION wrf_dm_monitor_rank SUBROUTINE wrf_get_dm_communicator ( communicator ) USE module_dm , ONLY : local_communicator IMPLICIT NONE INTEGER , INTENT(OUT) :: communicator communicator = local_communicator RETURN END SUBROUTINE wrf_get_dm_communicator SUBROUTINE wrf_get_dm_communicator_x ( communicator ) USE module_dm , ONLY : local_communicator_x IMPLICIT NONE INTEGER , INTENT(OUT) :: communicator communicator = local_communicator_x RETURN END SUBROUTINE wrf_get_dm_communicator_x SUBROUTINE wrf_get_dm_communicator_y ( communicator ) USE module_dm , ONLY : local_communicator_y IMPLICIT NONE INTEGER , INTENT(OUT) :: communicator communicator = local_communicator_y RETURN END SUBROUTINE wrf_get_dm_communicator_y SUBROUTINE wrf_get_dm_iocommunicator ( iocommunicator ) USE module_dm , ONLY : local_iocommunicator IMPLICIT NONE INTEGER , INTENT(OUT) :: iocommunicator iocommunicator = local_iocommunicator RETURN END SUBROUTINE wrf_get_dm_iocommunicator SUBROUTINE wrf_set_dm_communicator ( communicator ) USE module_dm , ONLY : local_communicator IMPLICIT NONE INTEGER , INTENT(IN) :: communicator local_communicator = communicator RETURN END SUBROUTINE wrf_set_dm_communicator SUBROUTINE wrf_set_dm_iocommunicator ( iocommunicator ) USE module_dm , ONLY : local_iocommunicator IMPLICIT NONE INTEGER , INTENT(IN) :: iocommunicator local_iocommunicator = iocommunicator RETURN END SUBROUTINE wrf_set_dm_iocommunicator SUBROUTINE wrf_get_dm_ntasks_x ( retval ) USE module_dm , ONLY : ntasks_x IMPLICIT NONE INTEGER , INTENT(OUT) :: retval retval = ntasks_x RETURN END SUBROUTINE wrf_get_dm_ntasks_x SUBROUTINE wrf_get_dm_ntasks_y ( retval ) USE module_dm , ONLY : ntasks_y IMPLICIT NONE INTEGER , INTENT(OUT) :: retval retval = ntasks_y RETURN END SUBROUTINE wrf_get_dm_ntasks_y SUBROUTINE wrf_patch_to_global_real (buf,globbuf,domdesc,stagger,ordering,& DS1,DE1,DS2,DE2,DS3,DE3,& MS1,ME1,MS2,ME2,MS3,ME3,& PS1,PE1,PS2,PE2,PS3,PE3 ) IMPLICIT NONE INTEGER DS1,DE1,DS2,DE2,DS3,DE3,& MS1,ME1,MS2,ME2,MS3,ME3,& PS1,PE1,PS2,PE2,PS3,PE3 CHARACTER *(*) stagger,ordering INTEGER fid,domdesc REAL globbuf(*) REAL buf(*) CALL wrf_patch_to_global_generic (buf,globbuf,domdesc,stagger,ordering,4,& DS1,DE1,DS2,DE2,DS3,DE3,& MS1,ME1,MS2,ME2,MS3,ME3,& PS1,PE1,PS2,PE2,PS3,PE3 ) RETURN END SUBROUTINE wrf_patch_to_global_real SUBROUTINE wrf_patch_to_global_double (buf,globbuf,domdesc,stagger,ordering,& DS1,DE1,DS2,DE2,DS3,DE3,& MS1,ME1,MS2,ME2,MS3,ME3,& PS1,PE1,PS2,PE2,PS3,PE3 ) IMPLICIT NONE INTEGER DS1,DE1,DS2,DE2,DS3,DE3,& MS1,ME1,MS2,ME2,MS3,ME3,& PS1,PE1,PS2,PE2,PS3,PE3 CHARACTER *(*) stagger,ordering INTEGER fid,domdesc REAL globbuf(*) REAL buf(*) CALL wrf_patch_to_global_generic (buf,globbuf,domdesc,stagger,ordering,8,& DS1,DE1,DS2,DE2,DS3,DE3,& MS1,ME1,MS2,ME2,MS3,ME3,& PS1,PE1,PS2,PE2,PS3,PE3 ) RETURN END SUBROUTINE wrf_patch_to_global_double SUBROUTINE wrf_patch_to_global_integer (buf,globbuf,domdesc,stagger,ordering,& DS1,DE1,DS2,DE2,DS3,DE3,& MS1,ME1,MS2,ME2,MS3,ME3,& PS1,PE1,PS2,PE2,PS3,PE3 ) IMPLICIT NONE INTEGER DS1,DE1,DS2,DE2,DS3,DE3,& MS1,ME1,MS2,ME2,MS3,ME3,& PS1,PE1,PS2,PE2,PS3,PE3 CHARACTER *(*) stagger,ordering INTEGER fid,domdesc INTEGER globbuf(*) INTEGER buf(*) CALL wrf_patch_to_global_generic (buf,globbuf,domdesc,stagger,ordering,4,& DS1,DE1,DS2,DE2,DS3,DE3,& MS1,ME1,MS2,ME2,MS3,ME3,& PS1,PE1,PS2,PE2,PS3,PE3 ) RETURN END SUBROUTINE wrf_patch_to_global_integer SUBROUTINE wrf_patch_to_global_logical (buf,globbuf,domdesc,stagger,ordering,& DS1,DE1,DS2,DE2,DS3,DE3,& MS1,ME1,MS2,ME2,MS3,ME3,& PS1,PE1,PS2,PE2,PS3,PE3 ) IMPLICIT NONE INTEGER DS1,DE1,DS2,DE2,DS3,DE3,& MS1,ME1,MS2,ME2,MS3,ME3,& PS1,PE1,PS2,PE2,PS3,PE3 CHARACTER *(*) stagger,ordering INTEGER fid,domdesc LOGICAL globbuf(*) LOGICAL buf(*) CALL wrf_patch_to_global_generic (buf,globbuf,domdesc,stagger,ordering,4,& DS1,DE1,DS2,DE2,DS3,DE3,& MS1,ME1,MS2,ME2,MS3,ME3,& PS1,PE1,PS2,PE2,PS3,PE3 ) RETURN END SUBROUTINE wrf_patch_to_global_logical SUBROUTINE wrf_patch_to_global_generic (buf,globbuf,domdesc,stagger,ordering,typesize,& DS1a,DE1a,DS2a,DE2a,DS3a,DE3a,& MS1a,ME1a,MS2a,ME2a,MS3a,ME3a,& PS1a,PE1a,PS2a,PE2a,PS3a,PE3a ) USE module_driver_constants USE module_timing USE module_wrf_error, ONLY : wrf_at_debug_level USE module_dm, ONLY : local_communicator, ntasks IMPLICIT NONE INTEGER DS1a,DE1a,DS2a,DE2a,DS3a,DE3a,& MS1a,ME1a,MS2a,ME2a,MS3a,ME3a,& PS1a,PE1a,PS2a,PE2a,PS3a,PE3A CHARACTER *(*) stagger,ordering INTEGER domdesc,typesize,ierr REAL globbuf(*) REAL buf(*) INTEGER DS1,DE1,DS2,DE2,DS3,DE3,& MS1,ME1,MS2,ME2,MS3,ME3,& PS1,PE1,PS2,PE2,PS3,PE3 INTEGER ids,ide,jds,jde,kds,kde,& ims,ime,jms,jme,kms,kme,& ips,ipe,jps,jpe,kps,kpe LOGICAL, EXTERNAL :: wrf_dm_on_monitor, has_char INTEGER i, j, k, ndim INTEGER Patch(3,2), Gpatch(3,2,ntasks) REAL, ALLOCATABLE :: tmpbuf( : ) REAL locbuf( (PE1a-PS1a+1)*(PE2a-PS2a+1)*(PE3a-PS3a+1)/4*typesize+32 ) DS1 = DS1a ; DE1 = DE1a ; DS2=DS2a ; DE2 = DE2a ; DS3 = DS3a ; DE3 = DE3a MS1 = MS1a ; ME1 = ME1a ; MS2=MS2a ; ME2 = ME2a ; MS3 = MS3a ; ME3 = ME3a PS1 = PS1a ; PE1 = PE1a ; PS2=PS2a ; PE2 = PE2a ; PS3 = PS3a ; PE3 = PE3a SELECT CASE ( TRIM(ordering) ) CASE ( 'xy', 'yx' ) ndim = 2 CASE DEFAULT ndim = 3 END SELECT SELECT CASE ( TRIM(ordering) ) CASE ( 'xyz','xy' ) IF ( .NOT. has_char( stagger, 'x' ) ) DE1 = DE1+1 IF ( .NOT. has_char( stagger, 'y' ) ) DE2 = DE2+1 IF ( ndim .EQ. 3 .AND. .NOT. has_char( stagger, 'z' ) ) DE3 = DE3+1 CASE ( 'yxz','yx' ) IF ( .NOT. has_char( stagger, 'x' ) ) DE2 = DE2+1 IF ( .NOT. has_char( stagger, 'y' ) ) DE1 = DE1+1 IF ( ndim .EQ. 3 .AND. .NOT. has_char( stagger, 'z' ) ) DE3 = DE3+1 CASE ( 'zxy' ) IF ( .NOT. has_char( stagger, 'x' ) ) DE2 = DE2+1 IF ( .NOT. has_char( stagger, 'y' ) ) DE3 = DE3+1 IF ( ndim .EQ. 3 .AND. .NOT. has_char( stagger, 'z' ) ) DE1 = DE1+1 CASE ( 'xzy' ) IF ( .NOT. has_char( stagger, 'x' ) ) DE1 = DE1+1 IF ( .NOT. has_char( stagger, 'y' ) ) DE3 = DE3+1 IF ( ndim .EQ. 3 .AND. .NOT. has_char( stagger, 'z' ) ) DE2 = DE2+1 CASE DEFAULT END SELECT IF ( wrf_dm_on_monitor() ) THEN ALLOCATE ( tmpbuf ( (DE1-DS1+1)*(DE2-DS2+1)*(DE3-DS3+1)/4*typesize+32 ), STAT=ierr ) ELSE ALLOCATE ( tmpbuf ( 1 ), STAT=ierr ) ENDIF IF ( ierr .ne. 0 ) CALL wrf_error_fatal3("",2203,& 'allocating tmpbuf in wrf_patch_to_global_generic') Patch(1,1) = ps1 ; Patch(1,2) = pe1 Patch(2,1) = ps2 ; Patch(2,2) = pe2 Patch(3,1) = ps3 ; Patch(3,2) = pe3 IF ( typesize .EQ. 4 ) THEN CALL just_patch_r ( buf , locbuf , size(locbuf), & PS1, PE1, PS2, PE2, PS3, PE3 , & MS1, ME1, MS2, ME2, MS3, ME3 ) ELSE IF ( typesize .EQ. 4 ) THEN CALL just_patch_i ( buf , locbuf , size(locbuf), & PS1, PE1, PS2, PE2, PS3, PE3 , & MS1, ME1, MS2, ME2, MS3, ME3 ) ELSE IF ( typesize .EQ. 8 ) THEN CALL just_patch_d ( buf , locbuf , size(locbuf), & PS1, PE1, PS2, PE2, PS3, PE3 , & MS1, ME1, MS2, ME2, MS3, ME3 ) ELSE IF ( typesize .EQ. 4 ) THEN CALL just_patch_l ( buf , locbuf , size(locbuf), & PS1, PE1, PS2, PE2, PS3, PE3 , & MS1, ME1, MS2, ME2, MS3, ME3 ) ENDIF CALL collect_on_comm0 ( local_communicator , 4 , & Patch , 6 , & GPatch , 6*ntasks ) CALL collect_on_comm0 ( local_communicator , typesize , & locbuf , (pe1-ps1+1)*(pe2-ps2+1)*(pe3-ps3+1), & tmpbuf , (de1-ds1+1)*(de2-ds2+1)*(de3-ds3+1) ) ndim = len(TRIM(ordering)) IF ( wrf_at_debug_level(500) ) THEN CALL start_timing ENDIF IF ( ndim .GE. 2 .AND. wrf_dm_on_monitor() ) THEN IF ( typesize .EQ. 4 ) THEN CALL patch_2_outbuf_r ( tmpbuf , globbuf , & DS1, DE1, DS2, DE2, DS3, DE3 , & GPATCH ) ELSE IF ( typesize .EQ. 4 ) THEN CALL patch_2_outbuf_i ( tmpbuf , globbuf , & DS1, DE1, DS2, DE2, DS3, DE3 , & GPATCH ) ELSE IF ( typesize .EQ. 8 ) THEN CALL patch_2_outbuf_d ( tmpbuf , globbuf , & DS1, DE1, DS2, DE2, DS3, DE3 , & GPATCH ) ELSE IF ( typesize .EQ. 4 ) THEN CALL patch_2_outbuf_l ( tmpbuf , globbuf , & DS1, DE1, DS2, DE2, DS3, DE3 , & GPATCH ) ENDIF ENDIF IF ( wrf_at_debug_level(500) ) THEN CALL end_timing('wrf_patch_to_global_generic') ENDIF DEALLOCATE( tmpbuf ) RETURN END SUBROUTINE wrf_patch_to_global_generic SUBROUTINE just_patch_i ( inbuf , outbuf, noutbuf, & PS1,PE1,PS2,PE2,PS3,PE3, & MS1,ME1,MS2,ME2,MS3,ME3 ) IMPLICIT NONE INTEGER , INTENT(IN) :: noutbuf INTEGER , DIMENSION(noutbuf) , INTENT(OUT) :: outbuf INTEGER MS1,ME1,MS2,ME2,MS3,ME3 INTEGER PS1,PE1,PS2,PE2,PS3,PE3 INTEGER , DIMENSION( MS1:ME1,MS2:ME2,MS3:ME3 ) , INTENT(IN) :: inbuf INTEGER :: i,j,k,n , icurs icurs = 1 DO k = PS3, PE3 DO j = PS2, PE2 DO i = PS1, PE1 outbuf( icurs ) = inbuf( i, j, k ) icurs = icurs + 1 ENDDO ENDDO ENDDO RETURN END SUBROUTINE just_patch_i SUBROUTINE just_patch_r ( inbuf , outbuf, noutbuf, & PS1,PE1,PS2,PE2,PS3,PE3, & MS1,ME1,MS2,ME2,MS3,ME3 ) IMPLICIT NONE INTEGER , INTENT(IN) :: noutbuf REAL , DIMENSION(noutbuf) , INTENT(OUT) :: outbuf INTEGER MS1,ME1,MS2,ME2,MS3,ME3 INTEGER PS1,PE1,PS2,PE2,PS3,PE3 REAL , DIMENSION( MS1:ME1,MS2:ME2,MS3:ME3 ) , INTENT(in) :: inbuf INTEGER :: i,j,k , icurs icurs = 1 DO k = PS3, PE3 DO j = PS2, PE2 DO i = PS1, PE1 outbuf( icurs ) = inbuf( i, j, k ) icurs = icurs + 1 ENDDO ENDDO ENDDO RETURN END SUBROUTINE just_patch_r SUBROUTINE just_patch_d ( inbuf , outbuf, noutbuf, & PS1,PE1,PS2,PE2,PS3,PE3, & MS1,ME1,MS2,ME2,MS3,ME3 ) IMPLICIT NONE INTEGER , INTENT(IN) :: noutbuf DOUBLE PRECISION , DIMENSION(noutbuf) , INTENT(OUT) :: outbuf INTEGER MS1,ME1,MS2,ME2,MS3,ME3 INTEGER PS1,PE1,PS2,PE2,PS3,PE3 DOUBLE PRECISION , DIMENSION( MS1:ME1,MS2:ME2,MS3:ME3 ) , INTENT(in) :: inbuf INTEGER :: i,j,k,n , icurs icurs = 1 DO k = PS3, PE3 DO j = PS2, PE2 DO i = PS1, PE1 outbuf( icurs ) = inbuf( i, j, k ) icurs = icurs + 1 ENDDO ENDDO ENDDO RETURN END SUBROUTINE just_patch_d SUBROUTINE just_patch_l ( inbuf , outbuf, noutbuf, & PS1,PE1,PS2,PE2,PS3,PE3, & MS1,ME1,MS2,ME2,MS3,ME3 ) IMPLICIT NONE INTEGER , INTENT(IN) :: noutbuf LOGICAL , DIMENSION(noutbuf) , INTENT(OUT) :: outbuf INTEGER MS1,ME1,MS2,ME2,MS3,ME3 INTEGER PS1,PE1,PS2,PE2,PS3,PE3 LOGICAL , DIMENSION( MS1:ME1,MS2:ME2,MS3:ME3 ) , INTENT(in) :: inbuf INTEGER :: i,j,k,n , icurs icurs = 1 DO k = PS3, PE3 DO j = PS2, PE2 DO i = PS1, PE1 outbuf( icurs ) = inbuf( i, j, k ) icurs = icurs + 1 ENDDO ENDDO ENDDO RETURN END SUBROUTINE just_patch_l SUBROUTINE patch_2_outbuf_r( inbuf, outbuf, & DS1,DE1,DS2,DE2,DS3,DE3, & GPATCH ) USE module_dm, ONLY : ntasks IMPLICIT NONE REAL , DIMENSION(*) , INTENT(IN) :: inbuf INTEGER DS1,DE1,DS2,DE2,DS3,DE3,GPATCH(3,2,ntasks) REAL , DIMENSION( DS1:DE1,DS2:DE2,DS3:DE3 ) , INTENT(out) :: outbuf INTEGER :: i,j,k,n , icurs icurs = 1 DO n = 1, ntasks DO k = GPATCH( 3,1,n ), GPATCH( 3,2,n ) DO j = GPATCH( 2,1,n ), GPATCH( 2,2,n ) DO i = GPATCH( 1,1,n ), GPATCH( 1,2,n ) outbuf( i, j, k ) = inbuf( icurs ) icurs = icurs + 1 ENDDO ENDDO ENDDO ENDDO RETURN END SUBROUTINE patch_2_outbuf_r SUBROUTINE patch_2_outbuf_i( inbuf, outbuf, & DS1,DE1,DS2,DE2,DS3,DE3,& GPATCH ) USE module_dm, ONLY : ntasks IMPLICIT NONE INTEGER , DIMENSION(*) , INTENT(IN) :: inbuf INTEGER DS1,DE1,DS2,DE2,DS3,DE3,GPATCH(3,2,ntasks) INTEGER , DIMENSION( DS1:DE1,DS2:DE2,DS3:DE3 ) , INTENT(out) :: outbuf INTEGER :: i,j,k,n , icurs icurs = 1 DO n = 1, ntasks DO k = GPATCH( 3,1,n ), GPATCH( 3,2,n ) DO j = GPATCH( 2,1,n ), GPATCH( 2,2,n ) DO i = GPATCH( 1,1,n ), GPATCH( 1,2,n ) outbuf( i, j, k ) = inbuf( icurs ) icurs = icurs + 1 ENDDO ENDDO ENDDO ENDDO RETURN END SUBROUTINE patch_2_outbuf_i SUBROUTINE patch_2_outbuf_d( inbuf, outbuf, & DS1,DE1,DS2,DE2,DS3,DE3,& GPATCH ) USE module_dm, ONLY : ntasks IMPLICIT NONE DOUBLE PRECISION , DIMENSION(*) , INTENT(IN) :: inbuf INTEGER DS1,DE1,DS2,DE2,DS3,DE3,GPATCH(3,2,ntasks) DOUBLE PRECISION , DIMENSION( DS1:DE1,DS2:DE2,DS3:DE3 ) , INTENT(out) :: outbuf INTEGER :: i,j,k,n , icurs icurs = 1 DO n = 1, ntasks DO k = GPATCH( 3,1,n ), GPATCH( 3,2,n ) DO j = GPATCH( 2,1,n ), GPATCH( 2,2,n ) DO i = GPATCH( 1,1,n ), GPATCH( 1,2,n ) outbuf( i, j, k ) = inbuf( icurs ) icurs = icurs + 1 ENDDO ENDDO ENDDO ENDDO RETURN END SUBROUTINE patch_2_outbuf_d SUBROUTINE patch_2_outbuf_l( inbuf, outbuf, & DS1,DE1,DS2,DE2,DS3,DE3,& GPATCH ) USE module_dm, ONLY : ntasks IMPLICIT NONE LOGICAL , DIMENSION(*) , INTENT(IN) :: inbuf INTEGER DS1,DE1,DS2,DE2,DS3,DE3,GPATCH(3,2,ntasks) LOGICAL , DIMENSION( DS1:DE1,DS2:DE2,DS3:DE3 ) , INTENT(out) :: outbuf INTEGER :: i,j,k,n , icurs icurs = 1 DO n = 1, ntasks DO k = GPATCH( 3,1,n ), GPATCH( 3,2,n ) DO j = GPATCH( 2,1,n ), GPATCH( 2,2,n ) DO i = GPATCH( 1,1,n ), GPATCH( 1,2,n ) outbuf( i, j, k ) = inbuf( icurs ) icurs = icurs + 1 ENDDO ENDDO ENDDO ENDDO RETURN END SUBROUTINE patch_2_outbuf_l SUBROUTINE wrf_global_to_patch_real (globbuf,buf,domdesc,stagger,ordering,& DS1,DE1,DS2,DE2,DS3,DE3,& MS1,ME1,MS2,ME2,MS3,ME3,& PS1,PE1,PS2,PE2,PS3,PE3 ) IMPLICIT NONE INTEGER DS1,DE1,DS2,DE2,DS3,DE3,& MS1,ME1,MS2,ME2,MS3,ME3,& PS1,PE1,PS2,PE2,PS3,PE3 CHARACTER *(*) stagger,ordering INTEGER fid,domdesc REAL globbuf(*) REAL buf(*) CALL wrf_global_to_patch_generic (globbuf,buf,domdesc,stagger,ordering,4,& DS1,DE1,DS2,DE2,DS3,DE3,& MS1,ME1,MS2,ME2,MS3,ME3,& PS1,PE1,PS2,PE2,PS3,PE3 ) RETURN END SUBROUTINE wrf_global_to_patch_real SUBROUTINE wrf_global_to_patch_double (globbuf,buf,domdesc,stagger,ordering,& DS1,DE1,DS2,DE2,DS3,DE3,& MS1,ME1,MS2,ME2,MS3,ME3,& PS1,PE1,PS2,PE2,PS3,PE3 ) IMPLICIT NONE INTEGER DS1,DE1,DS2,DE2,DS3,DE3,& MS1,ME1,MS2,ME2,MS3,ME3,& PS1,PE1,PS2,PE2,PS3,PE3 CHARACTER *(*) stagger,ordering INTEGER fid,domdesc REAL globbuf(*) REAL buf(*) CALL wrf_global_to_patch_generic (globbuf,buf,domdesc,stagger,ordering,8,& DS1,DE1,DS2,DE2,DS3,DE3,& MS1,ME1,MS2,ME2,MS3,ME3,& PS1,PE1,PS2,PE2,PS3,PE3 ) RETURN END SUBROUTINE wrf_global_to_patch_double SUBROUTINE wrf_global_to_patch_integer (globbuf,buf,domdesc,stagger,ordering,& DS1,DE1,DS2,DE2,DS3,DE3,& MS1,ME1,MS2,ME2,MS3,ME3,& PS1,PE1,PS2,PE2,PS3,PE3 ) IMPLICIT NONE INTEGER DS1,DE1,DS2,DE2,DS3,DE3,& MS1,ME1,MS2,ME2,MS3,ME3,& PS1,PE1,PS2,PE2,PS3,PE3 CHARACTER *(*) stagger,ordering INTEGER fid,domdesc INTEGER globbuf(*) INTEGER buf(*) CALL wrf_global_to_patch_generic (globbuf,buf,domdesc,stagger,ordering,4,& DS1,DE1,DS2,DE2,DS3,DE3,& MS1,ME1,MS2,ME2,MS3,ME3,& PS1,PE1,PS2,PE2,PS3,PE3 ) RETURN END SUBROUTINE wrf_global_to_patch_integer SUBROUTINE wrf_global_to_patch_logical (globbuf,buf,domdesc,stagger,ordering,& DS1,DE1,DS2,DE2,DS3,DE3,& MS1,ME1,MS2,ME2,MS3,ME3,& PS1,PE1,PS2,PE2,PS3,PE3 ) IMPLICIT NONE INTEGER DS1,DE1,DS2,DE2,DS3,DE3,& MS1,ME1,MS2,ME2,MS3,ME3,& PS1,PE1,PS2,PE2,PS3,PE3 CHARACTER *(*) stagger,ordering INTEGER fid,domdesc LOGICAL globbuf(*) LOGICAL buf(*) CALL wrf_global_to_patch_generic (globbuf,buf,domdesc,stagger,ordering,4,& DS1,DE1,DS2,DE2,DS3,DE3,& MS1,ME1,MS2,ME2,MS3,ME3,& PS1,PE1,PS2,PE2,PS3,PE3 ) RETURN END SUBROUTINE wrf_global_to_patch_logical SUBROUTINE wrf_global_to_patch_generic (globbuf,buf,domdesc,stagger,ordering,typesize,& DS1a,DE1a,DS2a,DE2a,DS3a,DE3a,& MS1a,ME1a,MS2a,ME2a,MS3a,ME3a,& PS1a,PE1a,PS2a,PE2a,PS3a,PE3a ) USE module_dm, ONLY : local_communicator, ntasks USE module_driver_constants IMPLICIT NONE INTEGER DS1a,DE1a,DS2a,DE2a,DS3a,DE3a,& MS1a,ME1a,MS2a,ME2a,MS3a,ME3a,& PS1a,PE1a,PS2a,PE2a,PS3a,PE3A CHARACTER *(*) stagger,ordering INTEGER domdesc,typesize,ierr REAL globbuf(*) REAL buf(*) INTEGER DS1,DE1,DS2,DE2,DS3,DE3,& MS1,ME1,MS2,ME2,MS3,ME3,& PS1,PE1,PS2,PE2,PS3,PE3 LOGICAL, EXTERNAL :: wrf_dm_on_monitor, has_char INTEGER i,j,k,ord,ord2d,ndim INTEGER Patch(3,2), Gpatch(3,2,ntasks) REAL, ALLOCATABLE :: tmpbuf( : ) REAL locbuf( (PE1a-PS1a+1)*(PE2a-PS2a+1)*(PE3a-PS3a+1)/4*typesize+32 ) DS1 = DS1a ; DE1 = DE1a ; DS2=DS2a ; DE2 = DE2a ; DS3 = DS3a ; DE3 = DE3a MS1 = MS1a ; ME1 = ME1a ; MS2=MS2a ; ME2 = ME2a ; MS3 = MS3a ; ME3 = ME3a PS1 = PS1a ; PE1 = PE1a ; PS2=PS2a ; PE2 = PE2a ; PS3 = PS3a ; PE3 = PE3a SELECT CASE ( TRIM(ordering) ) CASE ( 'xy', 'yx' ) ndim = 2 CASE DEFAULT ndim = 3 END SELECT SELECT CASE ( TRIM(ordering) ) CASE ( 'xyz','xy' ) IF ( .NOT. has_char( stagger, 'x' ) ) DE1 = DE1+1 IF ( .NOT. has_char( stagger, 'y' ) ) DE2 = DE2+1 IF ( ndim .EQ. 3 .AND. .NOT. has_char( stagger, 'z' ) ) DE3 = DE3+1 CASE ( 'yxz','yx' ) IF ( .NOT. has_char( stagger, 'x' ) ) DE2 = DE2+1 IF ( .NOT. has_char( stagger, 'y' ) ) DE1 = DE1+1 IF ( ndim .EQ. 3 .AND. .NOT. has_char( stagger, 'z' ) ) DE3 = DE3+1 CASE ( 'zxy' ) IF ( .NOT. has_char( stagger, 'x' ) ) DE2 = DE2+1 IF ( .NOT. has_char( stagger, 'y' ) ) DE3 = DE3+1 IF ( ndim .EQ. 3 .AND. .NOT. has_char( stagger, 'z' ) ) DE1 = DE1+1 CASE ( 'xzy' ) IF ( .NOT. has_char( stagger, 'x' ) ) DE1 = DE1+1 IF ( .NOT. has_char( stagger, 'y' ) ) DE3 = DE3+1 IF ( ndim .EQ. 3 .AND. .NOT. has_char( stagger, 'z' ) ) DE2 = DE2+1 CASE DEFAULT END SELECT IF ( wrf_dm_on_monitor() ) THEN ALLOCATE ( tmpbuf ( (DE1-DS1+1)*(DE2-DS2+1)*(DE3-DS3+1)/4*typesize+32 ), STAT=ierr ) ELSE ALLOCATE ( tmpbuf ( 1 ), STAT=ierr ) ENDIF IF ( ierr .ne. 0 ) CALL wrf_error_fatal3("",2613,& 'allocating tmpbuf in wrf_global_to_patch_generic') Patch(1,1) = ps1 ; Patch(1,2) = pe1 Patch(2,1) = ps2 ; Patch(2,2) = pe2 Patch(3,1) = ps3 ; Patch(3,2) = pe3 CALL collect_on_comm0 ( local_communicator , 4 , & Patch , 6 , & GPatch , 6*ntasks ) ndim = len(TRIM(ordering)) IF ( wrf_dm_on_monitor() .AND. ndim .GE. 2 ) THEN IF ( typesize .EQ. 4 ) THEN CALL outbuf_2_patch_r ( globbuf , tmpbuf , & DS1, DE1, DS2, DE2, DS3, DE3 , & MS1, ME1, MS2, ME2, MS3, ME3 , & GPATCH ) ELSE IF ( typesize .EQ. 4 ) THEN CALL outbuf_2_patch_i ( globbuf , tmpbuf , & DS1, DE1, DS2, DE2, DS3, DE3 , & GPATCH ) ELSE IF ( typesize .EQ. 8 ) THEN CALL outbuf_2_patch_d ( globbuf , tmpbuf , & DS1, DE1, DS2, DE2, DS3, DE3 , & GPATCH ) ELSE IF ( typesize .EQ. 4 ) THEN CALL outbuf_2_patch_l ( globbuf , tmpbuf , & DS1, DE1, DS2, DE2, DS3, DE3 , & GPATCH ) ENDIF ENDIF CALL dist_on_comm0 ( local_communicator , typesize , & tmpbuf , (de1-ds1+1)*(de2-ds2+1)*(de3-ds3+1) , & locbuf , (pe1-ps1+1)*(pe2-ps2+1)*(pe3-ps3+1) ) IF ( typesize .EQ. 4 ) THEN CALL all_sub_r ( locbuf , buf , & PS1, PE1, PS2, PE2, PS3, PE3 , & MS1, ME1, MS2, ME2, MS3, ME3 ) ELSE IF ( typesize .EQ. 4 ) THEN CALL all_sub_i ( locbuf , buf , & PS1, PE1, PS2, PE2, PS3, PE3 , & MS1, ME1, MS2, ME2, MS3, ME3 ) ELSE IF ( typesize .EQ. 8 ) THEN CALL all_sub_d ( locbuf , buf , & PS1, PE1, PS2, PE2, PS3, PE3 , & MS1, ME1, MS2, ME2, MS3, ME3 ) ELSE IF ( typesize .EQ. 4 ) THEN CALL all_sub_l ( locbuf , buf , & PS1, PE1, PS2, PE2, PS3, PE3 , & MS1, ME1, MS2, ME2, MS3, ME3 ) ENDIF DEALLOCATE ( tmpbuf ) RETURN END SUBROUTINE wrf_global_to_patch_generic SUBROUTINE all_sub_i ( inbuf , outbuf, & PS1,PE1,PS2,PE2,PS3,PE3, & MS1,ME1,MS2,ME2,MS3,ME3 ) IMPLICIT NONE INTEGER , DIMENSION(*) , INTENT(IN) :: inbuf INTEGER MS1,ME1,MS2,ME2,MS3,ME3 INTEGER PS1,PE1,PS2,PE2,PS3,PE3 INTEGER , DIMENSION( MS1:ME1,MS2:ME2,MS3:ME3 ) , INTENT(OUT) :: outbuf INTEGER :: i,j,k,n , icurs icurs = 1 DO k = PS3, PE3 DO j = PS2, PE2 DO i = PS1, PE1 outbuf( i, j, k ) = inbuf ( icurs ) icurs = icurs + 1 ENDDO ENDDO ENDDO RETURN END SUBROUTINE all_sub_i SUBROUTINE all_sub_r ( inbuf , outbuf, & PS1,PE1,PS2,PE2,PS3,PE3, & MS1,ME1,MS2,ME2,MS3,ME3 ) IMPLICIT NONE REAL , DIMENSION(*) , INTENT(IN) :: inbuf INTEGER MS1,ME1,MS2,ME2,MS3,ME3 INTEGER PS1,PE1,PS2,PE2,PS3,PE3 REAL , DIMENSION( MS1:ME1,MS2:ME2,MS3:ME3 ) , INTENT(OUT) :: outbuf INTEGER :: i,j,k,n , icurs icurs = 1 DO k = PS3, PE3 DO j = PS2, PE2 DO i = PS1, PE1 outbuf( i, j, k ) = inbuf ( icurs ) icurs = icurs + 1 ENDDO ENDDO ENDDO RETURN END SUBROUTINE all_sub_r SUBROUTINE all_sub_d ( inbuf , outbuf, & PS1,PE1,PS2,PE2,PS3,PE3, & MS1,ME1,MS2,ME2,MS3,ME3 ) IMPLICIT NONE DOUBLE PRECISION , DIMENSION(*) , INTENT(IN) :: inbuf INTEGER MS1,ME1,MS2,ME2,MS3,ME3 INTEGER PS1,PE1,PS2,PE2,PS3,PE3 DOUBLE PRECISION , DIMENSION( MS1:ME1,MS2:ME2,MS3:ME3 ) , INTENT(OUT) :: outbuf INTEGER :: i,j,k,n , icurs icurs = 1 DO k = PS3, PE3 DO j = PS2, PE2 DO i = PS1, PE1 outbuf( i, j, k ) = inbuf ( icurs ) icurs = icurs + 1 ENDDO ENDDO ENDDO RETURN END SUBROUTINE all_sub_d SUBROUTINE all_sub_l ( inbuf , outbuf, & PS1,PE1,PS2,PE2,PS3,PE3, & MS1,ME1,MS2,ME2,MS3,ME3 ) IMPLICIT NONE LOGICAL , DIMENSION(*) , INTENT(IN) :: inbuf INTEGER MS1,ME1,MS2,ME2,MS3,ME3 INTEGER PS1,PE1,PS2,PE2,PS3,PE3 LOGICAL , DIMENSION( MS1:ME1,MS2:ME2,MS3:ME3 ) , INTENT(OUT) :: outbuf INTEGER :: i,j,k,n , icurs icurs = 1 DO k = PS3, PE3 DO j = PS2, PE2 DO i = PS1, PE1 outbuf( i, j, k ) = inbuf ( icurs ) icurs = icurs + 1 ENDDO ENDDO ENDDO RETURN END SUBROUTINE all_sub_l SUBROUTINE outbuf_2_patch_r( inbuf, outbuf, & DS1,DE1,DS2,DE2,DS3,DE3, & MS1, ME1, MS2, ME2, MS3, ME3 , & GPATCH ) USE module_dm, ONLY : ntasks IMPLICIT NONE REAL , DIMENSION(*) , INTENT(OUT) :: outbuf INTEGER DS1,DE1,DS2,DE2,DS3,DE3,GPATCH(3,2,ntasks) INTEGER MS1,ME1,MS2,ME2,MS3,ME3 REAL , DIMENSION( DS1:DE1,DS2:DE2,DS3:DE3 ) , INTENT(IN) :: inbuf INTEGER :: i,j,k,n , icurs icurs = 1 DO n = 1, ntasks DO k = GPATCH( 3,1,n ), GPATCH( 3,2,n ) DO j = GPATCH( 2,1,n ), GPATCH( 2,2,n ) DO i = GPATCH( 1,1,n ), GPATCH( 1,2,n ) outbuf( icurs ) = inbuf( i,j,k ) icurs = icurs + 1 ENDDO ENDDO ENDDO ENDDO RETURN END SUBROUTINE outbuf_2_patch_r SUBROUTINE outbuf_2_patch_i( inbuf, outbuf, & DS1,DE1,DS2,DE2,DS3,DE3,& GPATCH ) USE module_dm, ONLY : ntasks IMPLICIT NONE INTEGER , DIMENSION(*) , INTENT(OUT) :: outbuf INTEGER DS1,DE1,DS2,DE2,DS3,DE3,GPATCH(3,2,ntasks) INTEGER , DIMENSION( DS1:DE1,DS2:DE2,DS3:DE3 ) , INTENT(IN) :: inbuf INTEGER :: i,j,k,n , icurs icurs = 1 DO n = 1, ntasks DO k = GPATCH( 3,1,n ), GPATCH( 3,2,n ) DO j = GPATCH( 2,1,n ), GPATCH( 2,2,n ) DO i = GPATCH( 1,1,n ), GPATCH( 1,2,n ) outbuf( icurs ) = inbuf( i,j,k ) icurs = icurs + 1 ENDDO ENDDO ENDDO ENDDO RETURN END SUBROUTINE outbuf_2_patch_i SUBROUTINE outbuf_2_patch_d( inbuf, outbuf, & DS1,DE1,DS2,DE2,DS3,DE3,& GPATCH ) USE module_dm, ONLY : ntasks IMPLICIT NONE DOUBLE PRECISION , DIMENSION(*) , INTENT(OUT) :: outbuf INTEGER DS1,DE1,DS2,DE2,DS3,DE3,GPATCH(3,2,ntasks) DOUBLE PRECISION , DIMENSION( DS1:DE1,DS2:DE2,DS3:DE3 ) , INTENT(IN) :: inbuf INTEGER :: i,j,k,n , icurs icurs = 1 DO n = 1, ntasks DO k = GPATCH( 3,1,n ), GPATCH( 3,2,n ) DO j = GPATCH( 2,1,n ), GPATCH( 2,2,n ) DO i = GPATCH( 1,1,n ), GPATCH( 1,2,n ) outbuf( icurs ) = inbuf( i,j,k ) icurs = icurs + 1 ENDDO ENDDO ENDDO ENDDO RETURN END SUBROUTINE outbuf_2_patch_d SUBROUTINE outbuf_2_patch_l( inbuf, outbuf, & DS1,DE1,DS2,DE2,DS3,DE3,& GPATCH ) USE module_dm, ONLY : ntasks IMPLICIT NONE LOGICAL , DIMENSION(*) , INTENT(OUT) :: outbuf INTEGER DS1,DE1,DS2,DE2,DS3,DE3,GPATCH(3,2,ntasks) LOGICAL , DIMENSION( DS1:DE1,DS2:DE2,DS3:DE3 ) , INTENT(IN) :: inbuf INTEGER :: i,j,k,n , icurs icurs = 1 DO n = 1, ntasks DO k = GPATCH( 3,1,n ), GPATCH( 3,2,n ) DO j = GPATCH( 2,1,n ), GPATCH( 2,2,n ) DO i = GPATCH( 1,1,n ), GPATCH( 1,2,n ) outbuf( icurs ) = inbuf( i,j,k ) icurs = icurs + 1 ENDDO ENDDO ENDDO ENDDO RETURN END SUBROUTINE outbuf_2_patch_l SUBROUTINE force_domain_em_part2 ( grid, ngrid, config_flags & ,moist,moist_bxs,moist_bxe,moist_bys,moist_bye,moist_btxs,moist_btxe,moist_btys,moist_btye,dfi_moist,dfi_moist_bxs,dfi_moist_bxe, & dfi_moist_bys,dfi_moist_bye,dfi_moist_btxs,dfi_moist_btxe,dfi_moist_btys,dfi_moist_btye,scalar,scalar_bxs,scalar_bxe,scalar_bys, & scalar_bye,scalar_btxs,scalar_btxe,scalar_btys,scalar_btye,dfi_scalar,dfi_scalar_bxs,dfi_scalar_bxe,dfi_scalar_bys, & dfi_scalar_bye,dfi_scalar_btxs,dfi_scalar_btxe,dfi_scalar_btys,dfi_scalar_btye,ozmixm,aerosolc_1,aerosolc_2,fdda3d,fdda2d, & advh_t,advz_t,nba_mij,nba_rij,chem,tracer,tracer_bxs,tracer_bxe,tracer_bys,tracer_bye,tracer_btxs,tracer_btxe,tracer_btys, & tracer_btye & ) USE module_state_description USE module_domain, ONLY : domain, get_ijk_from_grid USE module_configure, ONLY : grid_config_rec_type USE module_dm, ONLY : ntasks, ntasks_x, ntasks_y, local_communicator, mytask USE module_comm_nesting_dm, ONLY : halo_force_down_sub IMPLICIT NONE TYPE(domain), POINTER :: grid TYPE(domain), POINTER :: ngrid real ,DIMENSION(grid%sm31:grid%em31,grid%sm32:grid%em32,grid%sm33:grid%em33,num_moist) :: moist real ,DIMENSION(grid%sm33:grid%em33,grid%sm32:grid%em32,grid%spec_bdy_width,num_moist) :: moist_bxs real ,DIMENSION(grid%sm33:grid%em33,grid%sm32:grid%em32,grid%spec_bdy_width,num_moist) :: moist_bxe real ,DIMENSION(grid%sm31:grid%em31,grid%sm32:grid%em32,grid%spec_bdy_width,num_moist) :: moist_bys real ,DIMENSION(grid%sm31:grid%em31,grid%sm32:grid%em32,grid%spec_bdy_width,num_moist) :: moist_bye real ,DIMENSION(grid%sm33:grid%em33,grid%sm32:grid%em32,grid%spec_bdy_width,num_moist) :: moist_btxs real ,DIMENSION(grid%sm33:grid%em33,grid%sm32:grid%em32,grid%spec_bdy_width,num_moist) :: moist_btxe real ,DIMENSION(grid%sm31:grid%em31,grid%sm32:grid%em32,grid%spec_bdy_width,num_moist) :: moist_btys real ,DIMENSION(grid%sm31:grid%em31,grid%sm32:grid%em32,grid%spec_bdy_width,num_moist) :: moist_btye real ,DIMENSION(grid%sm31:grid%em31,grid%sm32:grid%em32,grid%sm33:grid%em33,num_dfi_moist) :: dfi_moist real ,DIMENSION(grid%sm33:grid%em33,grid%sm32:grid%em32,grid%spec_bdy_width,num_dfi_moist) :: dfi_moist_bxs real ,DIMENSION(grid%sm33:grid%em33,grid%sm32:grid%em32,grid%spec_bdy_width,num_dfi_moist) :: dfi_moist_bxe real ,DIMENSION(grid%sm31:grid%em31,grid%sm32:grid%em32,grid%spec_bdy_width,num_dfi_moist) :: dfi_moist_bys real ,DIMENSION(grid%sm31:grid%em31,grid%sm32:grid%em32,grid%spec_bdy_width,num_dfi_moist) :: dfi_moist_bye real ,DIMENSION(grid%sm33:grid%em33,grid%sm32:grid%em32,grid%spec_bdy_width,num_dfi_moist) :: dfi_moist_btxs real ,DIMENSION(grid%sm33:grid%em33,grid%sm32:grid%em32,grid%spec_bdy_width,num_dfi_moist) :: dfi_moist_btxe real ,DIMENSION(grid%sm31:grid%em31,grid%sm32:grid%em32,grid%spec_bdy_width,num_dfi_moist) :: dfi_moist_btys real ,DIMENSION(grid%sm31:grid%em31,grid%sm32:grid%em32,grid%spec_bdy_width,num_dfi_moist) :: dfi_moist_btye real ,DIMENSION(grid%sm31:grid%em31,grid%sm32:grid%em32,grid%sm33:grid%em33,num_scalar) :: scalar real ,DIMENSION(grid%sm33:grid%em33,grid%sm32:grid%em32,grid%spec_bdy_width,num_scalar) :: scalar_bxs real ,DIMENSION(grid%sm33:grid%em33,grid%sm32:grid%em32,grid%spec_bdy_width,num_scalar) :: scalar_bxe real ,DIMENSION(grid%sm31:grid%em31,grid%sm32:grid%em32,grid%spec_bdy_width,num_scalar) :: scalar_bys real ,DIMENSION(grid%sm31:grid%em31,grid%sm32:grid%em32,grid%spec_bdy_width,num_scalar) :: scalar_bye real ,DIMENSION(grid%sm33:grid%em33,grid%sm32:grid%em32,grid%spec_bdy_width,num_scalar) :: scalar_btxs real ,DIMENSION(grid%sm33:grid%em33,grid%sm32:grid%em32,grid%spec_bdy_width,num_scalar) :: scalar_btxe real ,DIMENSION(grid%sm31:grid%em31,grid%sm32:grid%em32,grid%spec_bdy_width,num_scalar) :: scalar_btys real ,DIMENSION(grid%sm31:grid%em31,grid%sm32:grid%em32,grid%spec_bdy_width,num_scalar) :: scalar_btye real ,DIMENSION(grid%sm31:grid%em31,grid%sm32:grid%em32,grid%sm33:grid%em33,num_dfi_scalar) :: dfi_scalar real ,DIMENSION(grid%sm33:grid%em33,grid%sm32:grid%em32,grid%spec_bdy_width,num_dfi_scalar) :: dfi_scalar_bxs real ,DIMENSION(grid%sm33:grid%em33,grid%sm32:grid%em32,grid%spec_bdy_width,num_dfi_scalar) :: dfi_scalar_bxe real ,DIMENSION(grid%sm31:grid%em31,grid%sm32:grid%em32,grid%spec_bdy_width,num_dfi_scalar) :: dfi_scalar_bys real ,DIMENSION(grid%sm31:grid%em31,grid%sm32:grid%em32,grid%spec_bdy_width,num_dfi_scalar) :: dfi_scalar_bye real ,DIMENSION(grid%sm33:grid%em33,grid%sm32:grid%em32,grid%spec_bdy_width,num_dfi_scalar) :: dfi_scalar_btxs real ,DIMENSION(grid%sm33:grid%em33,grid%sm32:grid%em32,grid%spec_bdy_width,num_dfi_scalar) :: dfi_scalar_btxe real ,DIMENSION(grid%sm31:grid%em31,grid%sm32:grid%em32,grid%spec_bdy_width,num_dfi_scalar) :: dfi_scalar_btys real ,DIMENSION(grid%sm31:grid%em31,grid%sm32:grid%em32,grid%spec_bdy_width,num_dfi_scalar) :: dfi_scalar_btye real ,DIMENSION(grid%sm31:grid%em31,1:grid%levsiz,grid%sm33:grid%em33,num_ozmixm) :: ozmixm real ,DIMENSION(grid%sm31:grid%em31,1:grid%paerlev,grid%sm33:grid%em33,num_aerosolc) :: aerosolc_1 real ,DIMENSION(grid%sm31:grid%em31,1:grid%paerlev,grid%sm33:grid%em33,num_aerosolc) :: aerosolc_2 real ,DIMENSION(grid%sm31:grid%em31,grid%sm32:grid%em32,grid%sm33:grid%em33,num_fdda3d) :: fdda3d real ,DIMENSION(grid%sm31:grid%em31,1:1,grid%sm33:grid%em33,num_fdda2d) :: fdda2d real ,DIMENSION(grid%sm31:grid%em31,grid%sm32:grid%em32,grid%sm33:grid%em33,num_advh_t) :: advh_t real ,DIMENSION(grid%sm31:grid%em31,grid%sm32:grid%em32,grid%sm33:grid%em33,num_advz_t) :: advz_t real ,DIMENSION(grid%sm31:grid%em31,grid%sm32:grid%em32,grid%sm33:grid%em33,num_nba_mij) :: nba_mij real ,DIMENSION(grid%sm31:grid%em31,grid%sm32:grid%em32,grid%sm33:grid%em33,num_nba_rij) :: nba_rij real ,DIMENSION(grid%sm31:grid%em31,grid%sm32:grid%em32,grid%sm33:grid%em33,num_chem) :: chem real ,DIMENSION(grid%sm31:grid%em31,grid%sm32:grid%em32,grid%sm33:grid%em33,num_tracer) :: tracer real ,DIMENSION(grid%sm33:grid%em33,grid%sm32:grid%em32,grid%spec_bdy_width,num_tracer) :: tracer_bxs real ,DIMENSION(grid%sm33:grid%em33,grid%sm32:grid%em32,grid%spec_bdy_width,num_tracer) :: tracer_bxe real ,DIMENSION(grid%sm31:grid%em31,grid%sm32:grid%em32,grid%spec_bdy_width,num_tracer) :: tracer_bys real ,DIMENSION(grid%sm31:grid%em31,grid%sm32:grid%em32,grid%spec_bdy_width,num_tracer) :: tracer_bye real ,DIMENSION(grid%sm33:grid%em33,grid%sm32:grid%em32,grid%spec_bdy_width,num_tracer) :: tracer_btxs real ,DIMENSION(grid%sm33:grid%em33,grid%sm32:grid%em32,grid%spec_bdy_width,num_tracer) :: tracer_btxe real ,DIMENSION(grid%sm31:grid%em31,grid%sm32:grid%em32,grid%spec_bdy_width,num_tracer) :: tracer_btys real ,DIMENSION(grid%sm31:grid%em31,grid%sm32:grid%em32,grid%spec_bdy_width,num_tracer) :: tracer_btye INTEGER nlev, msize INTEGER i,j,pig,pjg,cm,cn,nig,njg,retval,k TYPE (grid_config_rec_type) :: config_flags REAL xv(500) 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 :: ids, ide, jds, jde, kds, kde, & ims, ime, jms, jme, kms, kme, & ips, ipe, jps, jpe, kps, kpe INTEGER idim1,idim2,idim3,idim4,idim5,idim6,idim7,itrace REAL dummy_xs, dummy_xe, dummy_ys, dummy_ye CALL get_ijk_from_grid ( grid , & cids, cide, cjds, cjde, ckds, ckde, & cims, cime, cjms, cjme, ckms, ckme, & cips, cipe, cjps, cjpe, ckps, ckpe ) 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 CALL rsl_lite_from_parent_info(pig,pjg,retval) DO while ( retval .eq. 1 ) IF ( SIZE(grid%lu_index) .GT. 1 ) THEN CALL rsl_lite_from_parent_msg(4,xv) grid%lu_index(pig,pjg) = xv(1) ENDIF IF ( SIZE(grid%u_2) .GT. 1 ) THEN CALL rsl_lite_from_parent_msg((((ckde-1))-(ckds)+1)*4,xv) DO k = ckds,(ckde-1) grid%u_2(pig,k,pjg) = xv(k) ENDDO ENDIF IF ( SIZE(grid%v_2) .GT. 1 ) THEN CALL rsl_lite_from_parent_msg((((ckde-1))-(ckds)+1)*4,xv) DO k = ckds,(ckde-1) grid%v_2(pig,k,pjg) = xv(k) ENDDO ENDIF IF ( SIZE(grid%w_2) .GT. 1 ) THEN CALL rsl_lite_from_parent_msg(((ckde)-(ckds)+1)*4,xv) DO k = ckds,ckde grid%w_2(pig,k,pjg) = xv(k) ENDDO ENDIF IF ( SIZE(grid%ph_2) .GT. 1 ) THEN CALL rsl_lite_from_parent_msg(((ckde)-(ckds)+1)*4,xv) DO k = ckds,ckde grid%ph_2(pig,k,pjg) = xv(k) ENDDO ENDIF IF ( SIZE(grid%phb) .GT. 1 ) THEN CALL rsl_lite_from_parent_msg(((ckde)-(ckds)+1)*4,xv) DO k = ckds,ckde grid%phb(pig,k,pjg) = xv(k) ENDDO ENDIF IF ( SIZE(grid%t_2) .GT. 1 ) THEN CALL rsl_lite_from_parent_msg((((ckde-1))-(ckds)+1)*4,xv) DO k = ckds,(ckde-1) grid%t_2(pig,k,pjg) = xv(k) ENDDO ENDIF IF ( SIZE(grid%mu_2) .GT. 1 ) THEN CALL rsl_lite_from_parent_msg(4,xv) grid%mu_2(pig,pjg) = xv(1) ENDIF IF ( SIZE(grid%mub) .GT. 1 ) THEN CALL rsl_lite_from_parent_msg(4,xv) grid%mub(pig,pjg) = xv(1) ENDIF IF ( SIZE(grid%alb) .GT. 1 ) THEN CALL rsl_lite_from_parent_msg((((ckde-1))-(ckds)+1)*4,xv) DO k = ckds,(ckde-1) grid%alb(pig,k,pjg) = xv(k) ENDDO ENDIF IF ( SIZE(grid%pb) .GT. 1 ) THEN CALL rsl_lite_from_parent_msg((((ckde-1))-(ckds)+1)*4,xv) DO k = ckds,(ckde-1) grid%pb(pig,k,pjg) = xv(k) ENDDO ENDIF IF ( SIZE(grid%q2) .GT. 1 ) THEN CALL rsl_lite_from_parent_msg(4,xv) grid%q2(pig,pjg) = xv(1) ENDIF IF ( SIZE(grid%t2) .GT. 1 ) THEN CALL rsl_lite_from_parent_msg(4,xv) grid%t2(pig,pjg) = xv(1) ENDIF IF ( SIZE(grid%th2) .GT. 1 ) THEN CALL rsl_lite_from_parent_msg(4,xv) grid%th2(pig,pjg) = xv(1) ENDIF IF ( SIZE(grid%psfc) .GT. 1 ) THEN CALL rsl_lite_from_parent_msg(4,xv) grid%psfc(pig,pjg) = xv(1) ENDIF IF ( SIZE(grid%u10) .GT. 1 ) THEN CALL rsl_lite_from_parent_msg(4,xv) grid%u10(pig,pjg) = xv(1) ENDIF IF ( SIZE(grid%v10) .GT. 1 ) THEN CALL rsl_lite_from_parent_msg(4,xv) grid%v10(pig,pjg) = xv(1) ENDIF DO itrace = PARAM_FIRST_SCALAR, num_moist CALL rsl_lite_from_parent_msg((((ckde-1))-(ckds)+1)*4,xv) DO k = ckds,(ckde-1) moist(pig,k,pjg,itrace) = xv(k) ENDDO ENDDO DO itrace = PARAM_FIRST_SCALAR, num_dfi_moist CALL rsl_lite_from_parent_msg((((ckde-1))-(ckds)+1)*4,xv) DO k = ckds,(ckde-1) dfi_moist(pig,k,pjg,itrace) = xv(k) ENDDO ENDDO DO itrace = PARAM_FIRST_SCALAR, num_scalar CALL rsl_lite_from_parent_msg((((ckde-1))-(ckds)+1)*4,xv) DO k = ckds,(ckde-1) scalar(pig,k,pjg,itrace) = xv(k) ENDDO ENDDO DO itrace = PARAM_FIRST_SCALAR, num_dfi_scalar CALL rsl_lite_from_parent_msg((((ckde-1))-(ckds)+1)*4,xv) DO k = ckds,(ckde-1) dfi_scalar(pig,k,pjg,itrace) = xv(k) ENDDO ENDDO IF ( SIZE(grid%toposlpx) .GT. 1 ) THEN CALL rsl_lite_from_parent_msg(4,xv) grid%toposlpx(pig,pjg) = xv(1) ENDIF IF ( SIZE(grid%toposlpy) .GT. 1 ) THEN CALL rsl_lite_from_parent_msg(4,xv) grid%toposlpy(pig,pjg) = xv(1) ENDIF IF ( SIZE(grid%slope) .GT. 1 ) THEN CALL rsl_lite_from_parent_msg(4,xv) grid%slope(pig,pjg) = xv(1) ENDIF IF ( SIZE(grid%slp_azi) .GT. 1 ) THEN CALL rsl_lite_from_parent_msg(4,xv) grid%slp_azi(pig,pjg) = xv(1) ENDIF IF ( SIZE(grid%shdmax) .GT. 1 ) THEN CALL rsl_lite_from_parent_msg(4,xv) grid%shdmax(pig,pjg) = xv(1) ENDIF IF ( SIZE(grid%shdmin) .GT. 1 ) THEN CALL rsl_lite_from_parent_msg(4,xv) grid%shdmin(pig,pjg) = xv(1) ENDIF IF ( SIZE(grid%tslb) .GT. 1 ) THEN CALL rsl_lite_from_parent_msg(((config_flags%num_soil_layers)-(1)+1)*4,xv) DO k = 1,config_flags%num_soil_layers grid%tslb(pig,k,pjg) = xv(k) ENDDO ENDIF IF ( SIZE(grid%smois) .GT. 1 ) THEN CALL rsl_lite_from_parent_msg(((config_flags%num_soil_layers)-(1)+1)*4,xv) DO k = 1,config_flags%num_soil_layers grid%smois(pig,k,pjg) = xv(k) ENDDO ENDIF IF ( SIZE(grid%sh2o) .GT. 1 ) THEN CALL rsl_lite_from_parent_msg(((config_flags%num_soil_layers)-(1)+1)*4,xv) DO k = 1,config_flags%num_soil_layers grid%sh2o(pig,k,pjg) = xv(k) ENDDO ENDIF IF ( SIZE(grid%smcrel) .GT. 1 ) THEN CALL rsl_lite_from_parent_msg(((config_flags%num_soil_layers)-(1)+1)*4,xv) DO k = 1,config_flags%num_soil_layers grid%smcrel(pig,k,pjg) = xv(k) ENDDO ENDIF IF ( SIZE(grid%xice) .GT. 1 ) THEN CALL rsl_lite_from_parent_msg(4,xv) grid%xice(pig,pjg) = xv(1) ENDIF IF ( SIZE(grid%xicem) .GT. 1 ) THEN CALL rsl_lite_from_parent_msg(4,xv) grid%xicem(pig,pjg) = xv(1) ENDIF IF ( SIZE(grid%smstav) .GT. 1 ) THEN CALL rsl_lite_from_parent_msg(4,xv) grid%smstav(pig,pjg) = xv(1) ENDIF IF ( SIZE(grid%sfcrunoff) .GT. 1 ) THEN CALL rsl_lite_from_parent_msg(4,xv) grid%sfcrunoff(pig,pjg) = xv(1) ENDIF IF ( SIZE(grid%udrunoff) .GT. 1 ) THEN CALL rsl_lite_from_parent_msg(4,xv) grid%udrunoff(pig,pjg) = xv(1) ENDIF IF ( SIZE(grid%ivgtyp) .GT. 1 ) THEN CALL rsl_lite_from_parent_msg(4,xv) grid%ivgtyp(pig,pjg) = xv(1) ENDIF IF ( SIZE(grid%isltyp) .GT. 1 ) THEN CALL rsl_lite_from_parent_msg(4,xv) grid%isltyp(pig,pjg) = xv(1) ENDIF IF ( SIZE(grid%vegfra) .GT. 1 ) THEN CALL rsl_lite_from_parent_msg(4,xv) grid%vegfra(pig,pjg) = xv(1) ENDIF IF ( SIZE(grid%acgrdflx) .GT. 1 ) THEN CALL rsl_lite_from_parent_msg(4,xv) grid%acgrdflx(pig,pjg) = xv(1) ENDIF IF ( SIZE(grid%acsnow) .GT. 1 ) THEN CALL rsl_lite_from_parent_msg(4,xv) grid%acsnow(pig,pjg) = xv(1) ENDIF IF ( SIZE(grid%acsnom) .GT. 1 ) THEN CALL rsl_lite_from_parent_msg(4,xv) grid%acsnom(pig,pjg) = xv(1) ENDIF IF ( SIZE(grid%snow) .GT. 1 ) THEN CALL rsl_lite_from_parent_msg(4,xv) grid%snow(pig,pjg) = xv(1) ENDIF IF ( SIZE(grid%snowh) .GT. 1 ) THEN CALL rsl_lite_from_parent_msg(4,xv) grid%snowh(pig,pjg) = xv(1) ENDIF IF ( SIZE(grid%canwat) .GT. 1 ) THEN CALL rsl_lite_from_parent_msg(4,xv) grid%canwat(pig,pjg) = xv(1) ENDIF IF ( SIZE(grid%sstsk) .GT. 1 ) THEN CALL rsl_lite_from_parent_msg(4,xv) grid%sstsk(pig,pjg) = xv(1) ENDIF IF ( SIZE(grid%tr_urb2d) .GT. 1 ) THEN CALL rsl_lite_from_parent_msg(4,xv) grid%tr_urb2d(pig,pjg) = xv(1) ENDIF IF ( SIZE(grid%tb_urb2d) .GT. 1 ) THEN CALL rsl_lite_from_parent_msg(4,xv) grid%tb_urb2d(pig,pjg) = xv(1) ENDIF IF ( SIZE(grid%tg_urb2d) .GT. 1 ) THEN CALL rsl_lite_from_parent_msg(4,xv) grid%tg_urb2d(pig,pjg) = xv(1) ENDIF IF ( SIZE(grid%tc_urb2d) .GT. 1 ) THEN CALL rsl_lite_from_parent_msg(4,xv) grid%tc_urb2d(pig,pjg) = xv(1) ENDIF IF ( SIZE(grid%qc_urb2d) .GT. 1 ) THEN CALL rsl_lite_from_parent_msg(4,xv) grid%qc_urb2d(pig,pjg) = xv(1) ENDIF IF ( SIZE(grid%uc_urb2d) .GT. 1 ) THEN CALL rsl_lite_from_parent_msg(4,xv) grid%uc_urb2d(pig,pjg) = xv(1) ENDIF IF ( SIZE(grid%xxxr_urb2d) .GT. 1 ) THEN CALL rsl_lite_from_parent_msg(4,xv) grid%xxxr_urb2d(pig,pjg) = xv(1) ENDIF IF ( SIZE(grid%xxxb_urb2d) .GT. 1 ) THEN CALL rsl_lite_from_parent_msg(4,xv) grid%xxxb_urb2d(pig,pjg) = xv(1) ENDIF IF ( SIZE(grid%xxxg_urb2d) .GT. 1 ) THEN CALL rsl_lite_from_parent_msg(4,xv) grid%xxxg_urb2d(pig,pjg) = xv(1) ENDIF IF ( SIZE(grid%xxxc_urb2d) .GT. 1 ) THEN CALL rsl_lite_from_parent_msg(4,xv) grid%xxxc_urb2d(pig,pjg) = xv(1) ENDIF IF ( SIZE(grid%trl_urb3d) .GT. 1 ) THEN CALL rsl_lite_from_parent_msg(((config_flags%num_soil_layers)-(1)+1)*4,xv) DO k = 1,config_flags%num_soil_layers grid%trl_urb3d(pig,k,pjg) = xv(k) ENDDO ENDIF IF ( SIZE(grid%tbl_urb3d) .GT. 1 ) THEN CALL rsl_lite_from_parent_msg(((config_flags%num_soil_layers)-(1)+1)*4,xv) DO k = 1,config_flags%num_soil_layers grid%tbl_urb3d(pig,k,pjg) = xv(k) ENDDO ENDIF IF ( SIZE(grid%tgl_urb3d) .GT. 1 ) THEN CALL rsl_lite_from_parent_msg(((config_flags%num_soil_layers)-(1)+1)*4,xv) DO k = 1,config_flags%num_soil_layers grid%tgl_urb3d(pig,k,pjg) = xv(k) ENDDO ENDIF IF ( SIZE(grid%frc_urb2d) .GT. 1 ) THEN CALL rsl_lite_from_parent_msg(4,xv) grid%frc_urb2d(pig,pjg) = xv(1) ENDIF IF ( SIZE(grid%utype_urb2d) .GT. 1 ) THEN CALL rsl_lite_from_parent_msg(4,xv) grid%utype_urb2d(pig,pjg) = xv(1) ENDIF IF ( SIZE(grid%var2d) .GT. 1 ) THEN CALL rsl_lite_from_parent_msg(4,xv) grid%var2d(pig,pjg) = xv(1) ENDIF IF ( SIZE(grid%oc12d) .GT. 1 ) THEN CALL rsl_lite_from_parent_msg(4,xv) grid%oc12d(pig,pjg) = xv(1) ENDIF IF ( SIZE(grid%oa1) .GT. 1 ) THEN CALL rsl_lite_from_parent_msg(4,xv) grid%oa1(pig,pjg) = xv(1) ENDIF IF ( SIZE(grid%oa2) .GT. 1 ) THEN CALL rsl_lite_from_parent_msg(4,xv) grid%oa2(pig,pjg) = xv(1) ENDIF IF ( SIZE(grid%oa3) .GT. 1 ) THEN CALL rsl_lite_from_parent_msg(4,xv) grid%oa3(pig,pjg) = xv(1) ENDIF IF ( SIZE(grid%oa4) .GT. 1 ) THEN CALL rsl_lite_from_parent_msg(4,xv) grid%oa4(pig,pjg) = xv(1) ENDIF IF ( SIZE(grid%ol1) .GT. 1 ) THEN CALL rsl_lite_from_parent_msg(4,xv) grid%ol1(pig,pjg) = xv(1) ENDIF IF ( SIZE(grid%ol2) .GT. 1 ) THEN CALL rsl_lite_from_parent_msg(4,xv) grid%ol2(pig,pjg) = xv(1) ENDIF IF ( SIZE(grid%ol3) .GT. 1 ) THEN CALL rsl_lite_from_parent_msg(4,xv) grid%ol3(pig,pjg) = xv(1) ENDIF IF ( SIZE(grid%ol4) .GT. 1 ) THEN CALL rsl_lite_from_parent_msg(4,xv) grid%ol4(pig,pjg) = xv(1) ENDIF IF ( SIZE(grid%f_ice_phy) .GT. 1 ) THEN CALL rsl_lite_from_parent_msg((((ckde-1))-(ckds)+1)*4,xv) DO k = ckds,(ckde-1) grid%f_ice_phy(pig,k,pjg) = xv(k) ENDDO ENDIF IF ( SIZE(grid%f_rain_phy) .GT. 1 ) THEN CALL rsl_lite_from_parent_msg((((ckde-1))-(ckds)+1)*4,xv) DO k = ckds,(ckde-1) grid%f_rain_phy(pig,k,pjg) = xv(k) ENDDO ENDIF IF ( SIZE(grid%f_rimef_phy) .GT. 1 ) THEN CALL rsl_lite_from_parent_msg((((ckde-1))-(ckds)+1)*4,xv) DO k = ckds,(ckde-1) grid%f_rimef_phy(pig,k,pjg) = xv(k) ENDDO ENDIF IF ( SIZE(grid%h_diabatic) .GT. 1 ) THEN CALL rsl_lite_from_parent_msg((((ckde-1))-(ckds)+1)*4,xv) DO k = ckds,(ckde-1) grid%h_diabatic(pig,k,pjg) = xv(k) ENDDO ENDIF IF ( SIZE(grid%msft) .GT. 1 ) THEN CALL rsl_lite_from_parent_msg(4,xv) grid%msft(pig,pjg) = xv(1) ENDIF IF ( SIZE(grid%msfu) .GT. 1 ) THEN CALL rsl_lite_from_parent_msg(4,xv) grid%msfu(pig,pjg) = xv(1) ENDIF IF ( SIZE(grid%msfv) .GT. 1 ) THEN CALL rsl_lite_from_parent_msg(4,xv) grid%msfv(pig,pjg) = xv(1) ENDIF IF ( SIZE(grid%msftx) .GT. 1 ) THEN CALL rsl_lite_from_parent_msg(4,xv) grid%msftx(pig,pjg) = xv(1) ENDIF IF ( SIZE(grid%msfty) .GT. 1 ) THEN CALL rsl_lite_from_parent_msg(4,xv) grid%msfty(pig,pjg) = xv(1) ENDIF IF ( SIZE(grid%msfux) .GT. 1 ) THEN CALL rsl_lite_from_parent_msg(4,xv) grid%msfux(pig,pjg) = xv(1) ENDIF IF ( SIZE(grid%msfuy) .GT. 1 ) THEN CALL rsl_lite_from_parent_msg(4,xv) grid%msfuy(pig,pjg) = xv(1) ENDIF IF ( SIZE(grid%msfvx) .GT. 1 ) THEN CALL rsl_lite_from_parent_msg(4,xv) grid%msfvx(pig,pjg) = xv(1) ENDIF IF ( SIZE(grid%msfvx_inv) .GT. 1 ) THEN CALL rsl_lite_from_parent_msg(4,xv) grid%msfvx_inv(pig,pjg) = xv(1) ENDIF IF ( SIZE(grid%msfvy) .GT. 1 ) THEN CALL rsl_lite_from_parent_msg(4,xv) grid%msfvy(pig,pjg) = xv(1) ENDIF IF ( SIZE(grid%f) .GT. 1 ) THEN CALL rsl_lite_from_parent_msg(4,xv) grid%f(pig,pjg) = xv(1) ENDIF IF ( SIZE(grid%e) .GT. 1 ) THEN CALL rsl_lite_from_parent_msg(4,xv) grid%e(pig,pjg) = xv(1) ENDIF IF ( SIZE(grid%sina) .GT. 1 ) THEN CALL rsl_lite_from_parent_msg(4,xv) grid%sina(pig,pjg) = xv(1) ENDIF IF ( SIZE(grid%cosa) .GT. 1 ) THEN CALL rsl_lite_from_parent_msg(4,xv) grid%cosa(pig,pjg) = xv(1) ENDIF IF ( SIZE(grid%ht) .GT. 1 ) THEN CALL rsl_lite_from_parent_msg(4,xv) grid%ht(pig,pjg) = xv(1) ENDIF IF ( SIZE(grid%ht_shad) .GT. 1 ) THEN CALL rsl_lite_from_parent_msg(4,xv) grid%ht_shad(pig,pjg) = xv(1) ENDIF IF ( SIZE(grid%tsk) .GT. 1 ) THEN CALL rsl_lite_from_parent_msg(4,xv) grid%tsk(pig,pjg) = xv(1) ENDIF IF ( SIZE(grid%rainc) .GT. 1 ) THEN CALL rsl_lite_from_parent_msg(4,xv) grid%rainc(pig,pjg) = xv(1) ENDIF IF ( SIZE(grid%rainsh) .GT. 1 ) THEN CALL rsl_lite_from_parent_msg(4,xv) grid%rainsh(pig,pjg) = xv(1) ENDIF IF ( SIZE(grid%rainnc) .GT. 1 ) THEN CALL rsl_lite_from_parent_msg(4,xv) grid%rainnc(pig,pjg) = xv(1) ENDIF IF ( SIZE(grid%i_rainc) .GT. 1 ) THEN CALL rsl_lite_from_parent_msg(4,xv) grid%i_rainc(pig,pjg) = xv(1) ENDIF IF ( SIZE(grid%i_rainnc) .GT. 1 ) THEN CALL rsl_lite_from_parent_msg(4,xv) grid%i_rainnc(pig,pjg) = xv(1) ENDIF IF ( SIZE(grid%snownc) .GT. 1 ) THEN CALL rsl_lite_from_parent_msg(4,xv) grid%snownc(pig,pjg) = xv(1) ENDIF IF ( SIZE(grid%graupelnc) .GT. 1 ) THEN CALL rsl_lite_from_parent_msg(4,xv) grid%graupelnc(pig,pjg) = xv(1) ENDIF IF ( SIZE(grid%hailnc) .GT. 1 ) THEN CALL rsl_lite_from_parent_msg(4,xv) grid%hailnc(pig,pjg) = xv(1) ENDIF IF ( SIZE(grid%refl_10cm) .GT. 1 ) THEN CALL rsl_lite_from_parent_msg((((ckde-1))-(ckds)+1)*4,xv) DO k = ckds,(ckde-1) grid%refl_10cm(pig,k,pjg) = xv(k) ENDDO ENDIF IF ( SIZE(grid%rthraten) .GT. 1 ) THEN CALL rsl_lite_from_parent_msg((((ckde-1))-(ckds)+1)*4,xv) DO k = ckds,(ckde-1) grid%rthraten(pig,k,pjg) = xv(k) ENDDO ENDIF IF ( SIZE(grid%swdown) .GT. 1 ) THEN CALL rsl_lite_from_parent_msg(4,xv) grid%swdown(pig,pjg) = xv(1) ENDIF IF ( SIZE(grid%gsw) .GT. 1 ) THEN CALL rsl_lite_from_parent_msg(4,xv) grid%gsw(pig,pjg) = xv(1) ENDIF IF ( SIZE(grid%glw) .GT. 1 ) THEN CALL rsl_lite_from_parent_msg(4,xv) grid%glw(pig,pjg) = xv(1) ENDIF IF ( SIZE(grid%swnorm) .GT. 1 ) THEN CALL rsl_lite_from_parent_msg(4,xv) grid%swnorm(pig,pjg) = xv(1) ENDIF IF ( SIZE(grid%acswupt) .GT. 1 ) THEN CALL rsl_lite_from_parent_msg(4,xv) grid%acswupt(pig,pjg) = xv(1) ENDIF IF ( SIZE(grid%acswuptc) .GT. 1 ) THEN CALL rsl_lite_from_parent_msg(4,xv) grid%acswuptc(pig,pjg) = xv(1) ENDIF IF ( SIZE(grid%acswdnt) .GT. 1 ) THEN CALL rsl_lite_from_parent_msg(4,xv) grid%acswdnt(pig,pjg) = xv(1) ENDIF IF ( SIZE(grid%acswdntc) .GT. 1 ) THEN CALL rsl_lite_from_parent_msg(4,xv) grid%acswdntc(pig,pjg) = xv(1) ENDIF IF ( SIZE(grid%acswupb) .GT. 1 ) THEN CALL rsl_lite_from_parent_msg(4,xv) grid%acswupb(pig,pjg) = xv(1) ENDIF IF ( SIZE(grid%acswupbc) .GT. 1 ) THEN CALL rsl_lite_from_parent_msg(4,xv) grid%acswupbc(pig,pjg) = xv(1) ENDIF IF ( SIZE(grid%acswdnb) .GT. 1 ) THEN CALL rsl_lite_from_parent_msg(4,xv) grid%acswdnb(pig,pjg) = xv(1) ENDIF IF ( SIZE(grid%acswdnbc) .GT. 1 ) THEN CALL rsl_lite_from_parent_msg(4,xv) grid%acswdnbc(pig,pjg) = xv(1) ENDIF IF ( SIZE(grid%aclwupt) .GT. 1 ) THEN CALL rsl_lite_from_parent_msg(4,xv) grid%aclwupt(pig,pjg) = xv(1) ENDIF IF ( SIZE(grid%aclwuptc) .GT. 1 ) THEN CALL rsl_lite_from_parent_msg(4,xv) grid%aclwuptc(pig,pjg) = xv(1) ENDIF IF ( SIZE(grid%aclwdnt) .GT. 1 ) THEN CALL rsl_lite_from_parent_msg(4,xv) grid%aclwdnt(pig,pjg) = xv(1) ENDIF IF ( SIZE(grid%aclwdntc) .GT. 1 ) THEN CALL rsl_lite_from_parent_msg(4,xv) grid%aclwdntc(pig,pjg) = xv(1) ENDIF IF ( SIZE(grid%aclwupb) .GT. 1 ) THEN CALL rsl_lite_from_parent_msg(4,xv) grid%aclwupb(pig,pjg) = xv(1) ENDIF IF ( SIZE(grid%aclwupbc) .GT. 1 ) THEN CALL rsl_lite_from_parent_msg(4,xv) grid%aclwupbc(pig,pjg) = xv(1) ENDIF IF ( SIZE(grid%aclwdnb) .GT. 1 ) THEN CALL rsl_lite_from_parent_msg(4,xv) grid%aclwdnb(pig,pjg) = xv(1) ENDIF IF ( SIZE(grid%aclwdnbc) .GT. 1 ) THEN CALL rsl_lite_from_parent_msg(4,xv) grid%aclwdnbc(pig,pjg) = xv(1) ENDIF IF ( SIZE(grid%i_acswupt) .GT. 1 ) THEN CALL rsl_lite_from_parent_msg(4,xv) grid%i_acswupt(pig,pjg) = xv(1) ENDIF IF ( SIZE(grid%i_acswuptc) .GT. 1 ) THEN CALL rsl_lite_from_parent_msg(4,xv) grid%i_acswuptc(pig,pjg) = xv(1) ENDIF IF ( SIZE(grid%i_acswdnt) .GT. 1 ) THEN CALL rsl_lite_from_parent_msg(4,xv) grid%i_acswdnt(pig,pjg) = xv(1) ENDIF IF ( SIZE(grid%i_acswdntc) .GT. 1 ) THEN CALL rsl_lite_from_parent_msg(4,xv) grid%i_acswdntc(pig,pjg) = xv(1) ENDIF IF ( SIZE(grid%i_acswupb) .GT. 1 ) THEN CALL rsl_lite_from_parent_msg(4,xv) grid%i_acswupb(pig,pjg) = xv(1) ENDIF IF ( SIZE(grid%i_acswupbc) .GT. 1 ) THEN CALL rsl_lite_from_parent_msg(4,xv) grid%i_acswupbc(pig,pjg) = xv(1) ENDIF IF ( SIZE(grid%i_acswdnb) .GT. 1 ) THEN CALL rsl_lite_from_parent_msg(4,xv) grid%i_acswdnb(pig,pjg) = xv(1) ENDIF IF ( SIZE(grid%i_acswdnbc) .GT. 1 ) THEN CALL rsl_lite_from_parent_msg(4,xv) grid%i_acswdnbc(pig,pjg) = xv(1) ENDIF IF ( SIZE(grid%i_aclwupt) .GT. 1 ) THEN CALL rsl_lite_from_parent_msg(4,xv) grid%i_aclwupt(pig,pjg) = xv(1) ENDIF IF ( SIZE(grid%i_aclwuptc) .GT. 1 ) THEN CALL rsl_lite_from_parent_msg(4,xv) grid%i_aclwuptc(pig,pjg) = xv(1) ENDIF IF ( SIZE(grid%i_aclwdnt) .GT. 1 ) THEN CALL rsl_lite_from_parent_msg(4,xv) grid%i_aclwdnt(pig,pjg) = xv(1) ENDIF IF ( SIZE(grid%i_aclwdntc) .GT. 1 ) THEN CALL rsl_lite_from_parent_msg(4,xv) grid%i_aclwdntc(pig,pjg) = xv(1) ENDIF IF ( SIZE(grid%i_aclwupb) .GT. 1 ) THEN CALL rsl_lite_from_parent_msg(4,xv) grid%i_aclwupb(pig,pjg) = xv(1) ENDIF IF ( SIZE(grid%i_aclwupbc) .GT. 1 ) THEN CALL rsl_lite_from_parent_msg(4,xv) grid%i_aclwupbc(pig,pjg) = xv(1) ENDIF IF ( SIZE(grid%i_aclwdnb) .GT. 1 ) THEN CALL rsl_lite_from_parent_msg(4,xv) grid%i_aclwdnb(pig,pjg) = xv(1) ENDIF IF ( SIZE(grid%i_aclwdnbc) .GT. 1 ) THEN CALL rsl_lite_from_parent_msg(4,xv) grid%i_aclwdnbc(pig,pjg) = xv(1) ENDIF IF ( SIZE(grid%swupt) .GT. 1 ) THEN CALL rsl_lite_from_parent_msg(4,xv) grid%swupt(pig,pjg) = xv(1) ENDIF IF ( SIZE(grid%swuptc) .GT. 1 ) THEN CALL rsl_lite_from_parent_msg(4,xv) grid%swuptc(pig,pjg) = xv(1) ENDIF IF ( SIZE(grid%swdnt) .GT. 1 ) THEN CALL rsl_lite_from_parent_msg(4,xv) grid%swdnt(pig,pjg) = xv(1) ENDIF IF ( SIZE(grid%swdntc) .GT. 1 ) THEN CALL rsl_lite_from_parent_msg(4,xv) grid%swdntc(pig,pjg) = xv(1) ENDIF IF ( SIZE(grid%swupb) .GT. 1 ) THEN CALL rsl_lite_from_parent_msg(4,xv) grid%swupb(pig,pjg) = xv(1) ENDIF IF ( SIZE(grid%swupbc) .GT. 1 ) THEN CALL rsl_lite_from_parent_msg(4,xv) grid%swupbc(pig,pjg) = xv(1) ENDIF IF ( SIZE(grid%swdnb) .GT. 1 ) THEN CALL rsl_lite_from_parent_msg(4,xv) grid%swdnb(pig,pjg) = xv(1) ENDIF IF ( SIZE(grid%swdnbc) .GT. 1 ) THEN CALL rsl_lite_from_parent_msg(4,xv) grid%swdnbc(pig,pjg) = xv(1) ENDIF IF ( SIZE(grid%lwupt) .GT. 1 ) THEN CALL rsl_lite_from_parent_msg(4,xv) grid%lwupt(pig,pjg) = xv(1) ENDIF IF ( SIZE(grid%lwuptc) .GT. 1 ) THEN CALL rsl_lite_from_parent_msg(4,xv) grid%lwuptc(pig,pjg) = xv(1) ENDIF IF ( SIZE(grid%lwdnt) .GT. 1 ) THEN CALL rsl_lite_from_parent_msg(4,xv) grid%lwdnt(pig,pjg) = xv(1) ENDIF IF ( SIZE(grid%lwdntc) .GT. 1 ) THEN CALL rsl_lite_from_parent_msg(4,xv) grid%lwdntc(pig,pjg) = xv(1) ENDIF IF ( SIZE(grid%lwupb) .GT. 1 ) THEN CALL rsl_lite_from_parent_msg(4,xv) grid%lwupb(pig,pjg) = xv(1) ENDIF IF ( SIZE(grid%lwupbc) .GT. 1 ) THEN CALL rsl_lite_from_parent_msg(4,xv) grid%lwupbc(pig,pjg) = xv(1) ENDIF IF ( SIZE(grid%lwdnb) .GT. 1 ) THEN CALL rsl_lite_from_parent_msg(4,xv) grid%lwdnb(pig,pjg) = xv(1) ENDIF IF ( SIZE(grid%lwdnbc) .GT. 1 ) THEN CALL rsl_lite_from_parent_msg(4,xv) grid%lwdnbc(pig,pjg) = xv(1) ENDIF IF ( SIZE(grid%xlat) .GT. 1 ) THEN CALL rsl_lite_from_parent_msg(4,xv) grid%xlat(pig,pjg) = xv(1) ENDIF IF ( SIZE(grid%xlong) .GT. 1 ) THEN CALL rsl_lite_from_parent_msg(4,xv) grid%xlong(pig,pjg) = xv(1) ENDIF IF ( SIZE(grid%xlat_u) .GT. 1 ) THEN CALL rsl_lite_from_parent_msg(4,xv) grid%xlat_u(pig,pjg) = xv(1) ENDIF IF ( SIZE(grid%xlong_u) .GT. 1 ) THEN CALL rsl_lite_from_parent_msg(4,xv) grid%xlong_u(pig,pjg) = xv(1) ENDIF IF ( SIZE(grid%xlat_v) .GT. 1 ) THEN CALL rsl_lite_from_parent_msg(4,xv) grid%xlat_v(pig,pjg) = xv(1) ENDIF IF ( SIZE(grid%xlong_v) .GT. 1 ) THEN CALL rsl_lite_from_parent_msg(4,xv) grid%xlong_v(pig,pjg) = xv(1) ENDIF IF ( SIZE(grid%clat) .GT. 1 ) THEN CALL rsl_lite_from_parent_msg(4,xv) grid%clat(pig,pjg) = xv(1) ENDIF IF ( SIZE(grid%isnowxy) .GT. 1 ) THEN CALL rsl_lite_from_parent_msg(4,xv) grid%isnowxy(pig,pjg) = xv(1) ENDIF IF ( SIZE(grid%tvxy) .GT. 1 ) THEN CALL rsl_lite_from_parent_msg(4,xv) grid%tvxy(pig,pjg) = xv(1) ENDIF IF ( SIZE(grid%tgxy) .GT. 1 ) THEN CALL rsl_lite_from_parent_msg(4,xv) grid%tgxy(pig,pjg) = xv(1) ENDIF IF ( SIZE(grid%canliqxy) .GT. 1 ) THEN CALL rsl_lite_from_parent_msg(4,xv) grid%canliqxy(pig,pjg) = xv(1) ENDIF IF ( SIZE(grid%canicexy) .GT. 1 ) THEN CALL rsl_lite_from_parent_msg(4,xv) grid%canicexy(pig,pjg) = xv(1) ENDIF IF ( SIZE(grid%eahxy) .GT. 1 ) THEN CALL rsl_lite_from_parent_msg(4,xv) grid%eahxy(pig,pjg) = xv(1) ENDIF IF ( SIZE(grid%tahxy) .GT. 1 ) THEN CALL rsl_lite_from_parent_msg(4,xv) grid%tahxy(pig,pjg) = xv(1) ENDIF IF ( SIZE(grid%cmxy) .GT. 1 ) THEN CALL rsl_lite_from_parent_msg(4,xv) grid%cmxy(pig,pjg) = xv(1) ENDIF IF ( SIZE(grid%chxy) .GT. 1 ) THEN CALL rsl_lite_from_parent_msg(4,xv) grid%chxy(pig,pjg) = xv(1) ENDIF IF ( SIZE(grid%fwetxy) .GT. 1 ) THEN CALL rsl_lite_from_parent_msg(4,xv) grid%fwetxy(pig,pjg) = xv(1) ENDIF IF ( SIZE(grid%sneqvoxy) .GT. 1 ) THEN CALL rsl_lite_from_parent_msg(4,xv) grid%sneqvoxy(pig,pjg) = xv(1) ENDIF IF ( SIZE(grid%alboldxy) .GT. 1 ) THEN CALL rsl_lite_from_parent_msg(4,xv) grid%alboldxy(pig,pjg) = xv(1) ENDIF IF ( SIZE(grid%qsnowxy) .GT. 1 ) THEN CALL rsl_lite_from_parent_msg(4,xv) grid%qsnowxy(pig,pjg) = xv(1) ENDIF IF ( SIZE(grid%wslakexy) .GT. 1 ) THEN CALL rsl_lite_from_parent_msg(4,xv) grid%wslakexy(pig,pjg) = xv(1) ENDIF IF ( SIZE(grid%zwtxy) .GT. 1 ) THEN CALL rsl_lite_from_parent_msg(4,xv) grid%zwtxy(pig,pjg) = xv(1) ENDIF IF ( SIZE(grid%waxy) .GT. 1 ) THEN CALL rsl_lite_from_parent_msg(4,xv) grid%waxy(pig,pjg) = xv(1) ENDIF IF ( SIZE(grid%wtxy) .GT. 1 ) THEN CALL rsl_lite_from_parent_msg(4,xv) grid%wtxy(pig,pjg) = xv(1) ENDIF IF ( SIZE(grid%zsnsoxy) .GT. 1 ) THEN CALL rsl_lite_from_parent_msg(((config_flags%num_snso_layers)-(1)+1)*4,xv) DO k = 1,config_flags%num_snso_layers grid%zsnsoxy(pig,k,pjg) = xv(k) ENDDO ENDIF IF ( SIZE(grid%tsnoxy) .GT. 1 ) THEN CALL rsl_lite_from_parent_msg(((config_flags%num_snow_layers)-(1)+1)*4,xv) DO k = 1,config_flags%num_snow_layers grid%tsnoxy(pig,k,pjg) = xv(k) ENDDO ENDIF IF ( SIZE(grid%snicexy) .GT. 1 ) THEN CALL rsl_lite_from_parent_msg(((config_flags%num_snow_layers)-(1)+1)*4,xv) DO k = 1,config_flags%num_snow_layers grid%snicexy(pig,k,pjg) = xv(k) ENDDO ENDIF IF ( SIZE(grid%snliqxy) .GT. 1 ) THEN CALL rsl_lite_from_parent_msg(((config_flags%num_snow_layers)-(1)+1)*4,xv) DO k = 1,config_flags%num_snow_layers grid%snliqxy(pig,k,pjg) = xv(k) ENDDO ENDIF IF ( SIZE(grid%lfmassxy) .GT. 1 ) THEN CALL rsl_lite_from_parent_msg(4,xv) grid%lfmassxy(pig,pjg) = xv(1) ENDIF IF ( SIZE(grid%rtmassxy) .GT. 1 ) THEN CALL rsl_lite_from_parent_msg(4,xv) grid%rtmassxy(pig,pjg) = xv(1) ENDIF IF ( SIZE(grid%stmassxy) .GT. 1 ) THEN CALL rsl_lite_from_parent_msg(4,xv) grid%stmassxy(pig,pjg) = xv(1) ENDIF IF ( SIZE(grid%woodxy) .GT. 1 ) THEN CALL rsl_lite_from_parent_msg(4,xv) grid%woodxy(pig,pjg) = xv(1) ENDIF IF ( SIZE(grid%stblcpxy) .GT. 1 ) THEN CALL rsl_lite_from_parent_msg(4,xv) grid%stblcpxy(pig,pjg) = xv(1) ENDIF IF ( SIZE(grid%fastcpxy) .GT. 1 ) THEN CALL rsl_lite_from_parent_msg(4,xv) grid%fastcpxy(pig,pjg) = xv(1) ENDIF IF ( SIZE(grid%xsaixy) .GT. 1 ) THEN CALL rsl_lite_from_parent_msg(4,xv) grid%xsaixy(pig,pjg) = xv(1) ENDIF IF ( SIZE(grid%tradxy) .GT. 1 ) THEN CALL rsl_lite_from_parent_msg(4,xv) grid%tradxy(pig,pjg) = xv(1) ENDIF IF ( SIZE(grid%tsxy) .GT. 1 ) THEN CALL rsl_lite_from_parent_msg(4,xv) grid%tsxy(pig,pjg) = xv(1) ENDIF IF ( SIZE(grid%neexy) .GT. 1 ) THEN CALL rsl_lite_from_parent_msg(4,xv) grid%neexy(pig,pjg) = xv(1) ENDIF IF ( SIZE(grid%gppxy) .GT. 1 ) THEN CALL rsl_lite_from_parent_msg(4,xv) grid%gppxy(pig,pjg) = xv(1) ENDIF IF ( SIZE(grid%nppxy) .GT. 1 ) THEN CALL rsl_lite_from_parent_msg(4,xv) grid%nppxy(pig,pjg) = xv(1) ENDIF IF ( SIZE(grid%fvegxy) .GT. 1 ) THEN CALL rsl_lite_from_parent_msg(4,xv) grid%fvegxy(pig,pjg) = xv(1) ENDIF IF ( SIZE(grid%qinxy) .GT. 1 ) THEN CALL rsl_lite_from_parent_msg(4,xv) grid%qinxy(pig,pjg) = xv(1) ENDIF IF ( SIZE(grid%runsfxy) .GT. 1 ) THEN CALL rsl_lite_from_parent_msg(4,xv) grid%runsfxy(pig,pjg) = xv(1) ENDIF IF ( SIZE(grid%runsbxy) .GT. 1 ) THEN CALL rsl_lite_from_parent_msg(4,xv) grid%runsbxy(pig,pjg) = xv(1) ENDIF IF ( SIZE(grid%ecanxy) .GT. 1 ) THEN CALL rsl_lite_from_parent_msg(4,xv) grid%ecanxy(pig,pjg) = xv(1) ENDIF IF ( SIZE(grid%edirxy) .GT. 1 ) THEN CALL rsl_lite_from_parent_msg(4,xv) grid%edirxy(pig,pjg) = xv(1) ENDIF IF ( SIZE(grid%etranxy) .GT. 1 ) THEN CALL rsl_lite_from_parent_msg(4,xv) grid%etranxy(pig,pjg) = xv(1) ENDIF IF ( SIZE(grid%fsaxy) .GT. 1 ) THEN CALL rsl_lite_from_parent_msg(4,xv) grid%fsaxy(pig,pjg) = xv(1) ENDIF IF ( SIZE(grid%firaxy) .GT. 1 ) THEN CALL rsl_lite_from_parent_msg(4,xv) grid%firaxy(pig,pjg) = xv(1) ENDIF IF ( SIZE(grid%aparxy) .GT. 1 ) THEN CALL rsl_lite_from_parent_msg(4,xv) grid%aparxy(pig,pjg) = xv(1) ENDIF IF ( SIZE(grid%psnxy) .GT. 1 ) THEN CALL rsl_lite_from_parent_msg(4,xv) grid%psnxy(pig,pjg) = xv(1) ENDIF IF ( SIZE(grid%savxy) .GT. 1 ) THEN CALL rsl_lite_from_parent_msg(4,xv) grid%savxy(pig,pjg) = xv(1) ENDIF IF ( SIZE(grid%sagxy) .GT. 1 ) THEN CALL rsl_lite_from_parent_msg(4,xv) grid%sagxy(pig,pjg) = xv(1) ENDIF IF ( SIZE(grid%fsnoxy) .GT. 1 ) THEN CALL rsl_lite_from_parent_msg(4,xv) grid%fsnoxy(pig,pjg) = xv(1) ENDIF IF ( SIZE(grid%t2mvxy) .GT. 1 ) THEN CALL rsl_lite_from_parent_msg(4,xv) grid%t2mvxy(pig,pjg) = xv(1) ENDIF IF ( SIZE(grid%t2mbxy) .GT. 1 ) THEN CALL rsl_lite_from_parent_msg(4,xv) grid%t2mbxy(pig,pjg) = xv(1) ENDIF IF ( SIZE(grid%q2mvxy) .GT. 1 ) THEN CALL rsl_lite_from_parent_msg(4,xv) grid%q2mvxy(pig,pjg) = xv(1) ENDIF IF ( SIZE(grid%q2mbxy) .GT. 1 ) THEN CALL rsl_lite_from_parent_msg(4,xv) grid%q2mbxy(pig,pjg) = xv(1) ENDIF IF ( SIZE(grid%chstarxy) .GT. 1 ) THEN CALL rsl_lite_from_parent_msg(4,xv) grid%chstarxy(pig,pjg) = xv(1) ENDIF IF ( SIZE(grid%rssunxy) .GT. 1 ) THEN CALL rsl_lite_from_parent_msg(4,xv) grid%rssunxy(pig,pjg) = xv(1) ENDIF IF ( SIZE(grid%rsshaxy) .GT. 1 ) THEN CALL rsl_lite_from_parent_msg(4,xv) grid%rsshaxy(pig,pjg) = xv(1) ENDIF IF ( SIZE(grid%bgapxy) .GT. 1 ) THEN CALL rsl_lite_from_parent_msg(4,xv) grid%bgapxy(pig,pjg) = xv(1) ENDIF IF ( SIZE(grid%wgapxy) .GT. 1 ) THEN CALL rsl_lite_from_parent_msg(4,xv) grid%wgapxy(pig,pjg) = xv(1) ENDIF IF ( SIZE(grid%gapxy) .GT. 1 ) THEN CALL rsl_lite_from_parent_msg(4,xv) grid%gapxy(pig,pjg) = xv(1) ENDIF IF ( SIZE(grid%tgvxy) .GT. 1 ) THEN CALL rsl_lite_from_parent_msg(4,xv) grid%tgvxy(pig,pjg) = xv(1) ENDIF IF ( SIZE(grid%tgbxy) .GT. 1 ) THEN CALL rsl_lite_from_parent_msg(4,xv) grid%tgbxy(pig,pjg) = xv(1) ENDIF IF ( SIZE(grid%chvxy) .GT. 1 ) THEN CALL rsl_lite_from_parent_msg(4,xv) grid%chvxy(pig,pjg) = xv(1) ENDIF IF ( SIZE(grid%chbxy) .GT. 1 ) THEN CALL rsl_lite_from_parent_msg(4,xv) grid%chbxy(pig,pjg) = xv(1) ENDIF IF ( SIZE(grid%tmn) .GT. 1 ) THEN CALL rsl_lite_from_parent_msg(4,xv) grid%tmn(pig,pjg) = xv(1) ENDIF IF ( SIZE(grid%tyr) .GT. 1 ) THEN CALL rsl_lite_from_parent_msg(4,xv) grid%tyr(pig,pjg) = xv(1) ENDIF IF ( SIZE(grid%tyra) .GT. 1 ) THEN CALL rsl_lite_from_parent_msg(4,xv) grid%tyra(pig,pjg) = xv(1) ENDIF IF ( SIZE(grid%tdly) .GT. 1 ) THEN CALL rsl_lite_from_parent_msg(4,xv) grid%tdly(pig,pjg) = xv(1) ENDIF IF ( SIZE(grid%tlag) .GT. 1 ) THEN CALL rsl_lite_from_parent_msg(((config_flags%lagday)-(1)+1)*4,xv) DO k = 1,config_flags%lagday grid%tlag(pig,k,pjg) = xv(k) ENDDO ENDIF IF ( SIZE(grid%xland) .GT. 1 ) THEN CALL rsl_lite_from_parent_msg(4,xv) grid%xland(pig,pjg) = xv(1) ENDIF IF ( SIZE(grid%achfx) .GT. 1 ) THEN CALL rsl_lite_from_parent_msg(4,xv) grid%achfx(pig,pjg) = xv(1) ENDIF IF ( SIZE(grid%aclhf) .GT. 1 ) THEN CALL rsl_lite_from_parent_msg(4,xv) grid%aclhf(pig,pjg) = xv(1) ENDIF IF ( SIZE(grid%snowc) .GT. 1 ) THEN CALL rsl_lite_from_parent_msg(4,xv) grid%snowc(pig,pjg) = xv(1) ENDIF IF ( SIZE(grid%tml) .GT. 1 ) THEN CALL rsl_lite_from_parent_msg(4,xv) grid%tml(pig,pjg) = xv(1) ENDIF IF ( SIZE(grid%t0ml) .GT. 1 ) THEN CALL rsl_lite_from_parent_msg(4,xv) grid%t0ml(pig,pjg) = xv(1) ENDIF IF ( SIZE(grid%hml) .GT. 1 ) THEN CALL rsl_lite_from_parent_msg(4,xv) grid%hml(pig,pjg) = xv(1) ENDIF IF ( SIZE(grid%h0ml) .GT. 1 ) THEN CALL rsl_lite_from_parent_msg(4,xv) grid%h0ml(pig,pjg) = xv(1) ENDIF IF ( SIZE(grid%huml) .GT. 1 ) THEN CALL rsl_lite_from_parent_msg(4,xv) grid%huml(pig,pjg) = xv(1) ENDIF IF ( SIZE(grid%hvml) .GT. 1 ) THEN CALL rsl_lite_from_parent_msg(4,xv) grid%hvml(pig,pjg) = xv(1) ENDIF IF ( SIZE(grid%tmoml) .GT. 1 ) THEN CALL rsl_lite_from_parent_msg(4,xv) grid%tmoml(pig,pjg) = xv(1) ENDIF IF ( SIZE(grid%vertstrucc) .GT. 1 ) THEN CALL rsl_lite_from_parent_msg((((ckde-1))-(ckds)+1)*4,xv) DO k = ckds,(ckde-1) grid%vertstrucc(pig,k,pjg) = xv(k) ENDDO ENDIF IF ( SIZE(grid%vertstrucs) .GT. 1 ) THEN CALL rsl_lite_from_parent_msg((((ckde-1))-(ckds)+1)*4,xv) DO k = ckds,(ckde-1) grid%vertstrucs(pig,k,pjg) = xv(k) ENDDO ENDIF IF ( SIZE(grid%ru_tendf_stoch) .GT. 1 ) THEN CALL rsl_lite_from_parent_msg((((ckde-1))-(ckds)+1)*4,xv) DO k = ckds,(ckde-1) grid%ru_tendf_stoch(pig,k,pjg) = xv(k) ENDDO ENDIF IF ( SIZE(grid%rv_tendf_stoch) .GT. 1 ) THEN CALL rsl_lite_from_parent_msg((((ckde-1))-(ckds)+1)*4,xv) DO k = ckds,(ckde-1) grid%rv_tendf_stoch(pig,k,pjg) = xv(k) ENDDO ENDIF IF ( SIZE(grid%rt_tendf_stoch) .GT. 1 ) THEN CALL rsl_lite_from_parent_msg((((ckde-1))-(ckds)+1)*4,xv) DO k = ckds,(ckde-1) grid%rt_tendf_stoch(pig,k,pjg) = xv(k) ENDDO ENDIF IF ( SIZE(grid%landmask) .GT. 1 ) THEN CALL rsl_lite_from_parent_msg(4,xv) grid%landmask(pig,pjg) = xv(1) ENDIF IF ( SIZE(grid%sst) .GT. 1 ) THEN CALL rsl_lite_from_parent_msg(4,xv) grid%sst(pig,pjg) = xv(1) ENDIF DO itrace = PARAM_FIRST_SCALAR, num_tracer CALL rsl_lite_from_parent_msg((((ckde-1))-(ckds)+1)*4,xv) DO k = ckds,(ckde-1) tracer(pig,k,pjg,itrace) = xv(k) ENDDO ENDDO CALL rsl_lite_from_parent_info(pig,pjg,retval) ENDDO CALL get_ijk_from_grid ( grid , & ids, ide, jds, jde, kds, kde, & ims, ime, jms, jme, kms, kme, & ips, ipe, jps, jpe, kps, kpe ) CALL HALO_FORCE_DOWN_sub ( grid, & num_moist, & moist, & num_dfi_moist, & dfi_moist, & num_scalar, & scalar, & num_dfi_scalar, & dfi_scalar, & num_tracer, & tracer, & local_communicator, & mytask, ntasks, ntasks_x, ntasks_y, & ids, ide, jds, jde, kds, kde, & ims, ime, jms, jme, kms, kme, & ips, ipe, jps, jpe, kps, kpe ) IF ( SIZE( grid%u_2, 1 ) * SIZE( grid%u_2, 3 ) .GT. 1 ) THEN CALL bdy_interp ( & grid%u_2, & cids, cide, ckds, ckde, cjds, cjde, & cims, cime, ckms, ckme, cjms, cjme, & cips, cipe, ckps, MIN( (ckde-1), ckpe ), cjps, cjpe, & ngrid%u_2, & nids, nide, nkds, nkde, njds, njde, & nims, nime, nkms, nkme, njms, njme, & nips, nipe, nkps, MIN( (nkde-1), nkpe ), njps, njpe, & config_flags%shw, ngrid%imask_xstag, & .TRUE., .FALSE., & ngrid%i_parent_start, ngrid%j_parent_start, & ngrid%parent_grid_ratio, ngrid%parent_grid_ratio & ,dummy_xs,ngrid%u_bxs & ,dummy_xe,ngrid%u_bxe & ,dummy_ys,ngrid%u_bys & ,dummy_ye,ngrid%u_bye & ,dummy_xs,ngrid%u_btxs & ,dummy_xe,ngrid%u_btxe & ,dummy_ys,ngrid%u_btys & ,dummy_ye,ngrid%u_btye & ,grid%dt,ngrid%dt & ) ENDIF IF ( SIZE( grid%v_2, 1 ) * SIZE( grid%v_2, 3 ) .GT. 1 ) THEN CALL bdy_interp ( & grid%v_2, & cids, cide, ckds, ckde, cjds, cjde, & cims, cime, ckms, ckme, cjms, cjme, & cips, cipe, ckps, MIN( (ckde-1), ckpe ), cjps, cjpe, & ngrid%v_2, & nids, nide, nkds, nkde, njds, njde, & nims, nime, nkms, nkme, njms, njme, & nips, nipe, nkps, MIN( (nkde-1), nkpe ), njps, njpe, & config_flags%shw, ngrid%imask_ystag, & .FALSE., .TRUE., & ngrid%i_parent_start, ngrid%j_parent_start, & ngrid%parent_grid_ratio, ngrid%parent_grid_ratio & ,dummy_xs,ngrid%v_bxs & ,dummy_xe,ngrid%v_bxe & ,dummy_ys,ngrid%v_bys & ,dummy_ye,ngrid%v_bye & ,dummy_xs,ngrid%v_btxs & ,dummy_xe,ngrid%v_btxe & ,dummy_ys,ngrid%v_btys & ,dummy_ye,ngrid%v_btye & ,grid%dt,ngrid%dt & ) ENDIF IF ( SIZE( grid%w_2, 1 ) * SIZE( grid%w_2, 3 ) .GT. 1 ) THEN CALL bdy_interp ( & grid%w_2, & cids, cide, ckds, ckde, cjds, cjde, & cims, cime, ckms, ckme, cjms, cjme, & cips, cipe, ckps, MIN( ckde, ckpe ), cjps, cjpe, & ngrid%w_2, & nids, nide, nkds, nkde, njds, njde, & nims, nime, nkms, nkme, njms, njme, & nips, nipe, nkps, MIN( nkde, nkpe ), njps, njpe, & config_flags%shw, ngrid%imask_nostag, & .FALSE., .FALSE., & ngrid%i_parent_start, ngrid%j_parent_start, & ngrid%parent_grid_ratio, ngrid%parent_grid_ratio & ,dummy_xs,ngrid%w_bxs & ,dummy_xe,ngrid%w_bxe & ,dummy_ys,ngrid%w_bys & ,dummy_ye,ngrid%w_bye & ,dummy_xs,ngrid%w_btxs & ,dummy_xe,ngrid%w_btxe & ,dummy_ys,ngrid%w_btys & ,dummy_ye,ngrid%w_btye & ,grid%dt,ngrid%dt & ) ENDIF IF ( SIZE( grid%ph_2, 1 ) * SIZE( grid%ph_2, 3 ) .GT. 1 ) THEN CALL bdy_interp ( & grid%ph_2, & cids, cide, ckds, ckde, cjds, cjde, & cims, cime, ckms, ckme, cjms, cjme, & cips, cipe, ckps, MIN( ckde, ckpe ), cjps, cjpe, & ngrid%ph_2, & nids, nide, nkds, nkde, njds, njde, & nims, nime, nkms, nkme, njms, njme, & nips, nipe, nkps, MIN( nkde, nkpe ), njps, njpe, & config_flags%shw, ngrid%imask_nostag, & .FALSE., .FALSE., & ngrid%i_parent_start, ngrid%j_parent_start, & ngrid%parent_grid_ratio, ngrid%parent_grid_ratio & ,dummy_xs,ngrid%ph_bxs & ,dummy_xe,ngrid%ph_bxe & ,dummy_ys,ngrid%ph_bys & ,dummy_ye,ngrid%ph_bye & ,dummy_xs,ngrid%ph_btxs & ,dummy_xe,ngrid%ph_btxe & ,dummy_ys,ngrid%ph_btys & ,dummy_ye,ngrid%ph_btye & ,grid%dt,ngrid%dt & ) ENDIF IF ( SIZE( grid%t_2, 1 ) * SIZE( grid%t_2, 3 ) .GT. 1 ) THEN CALL bdy_interp ( & grid%t_2, & cids, cide, ckds, ckde, cjds, cjde, & cims, cime, ckms, ckme, cjms, cjme, & cips, cipe, ckps, MIN( (ckde-1), ckpe ), cjps, cjpe, & ngrid%t_2, & nids, nide, nkds, nkde, njds, njde, & nims, nime, nkms, nkme, njms, njme, & nips, nipe, nkps, MIN( (nkde-1), nkpe ), njps, njpe, & config_flags%shw, ngrid%imask_nostag, & .FALSE., .FALSE., & ngrid%i_parent_start, ngrid%j_parent_start, & ngrid%parent_grid_ratio, ngrid%parent_grid_ratio & ,dummy_xs,ngrid%t_bxs & ,dummy_xe,ngrid%t_bxe & ,dummy_ys,ngrid%t_bys & ,dummy_ye,ngrid%t_bye & ,dummy_xs,ngrid%t_btxs & ,dummy_xe,ngrid%t_btxe & ,dummy_ys,ngrid%t_btys & ,dummy_ye,ngrid%t_btye & ,grid%dt,ngrid%dt & ) ENDIF IF ( SIZE( grid%mu_2, 1 ) * SIZE( grid%mu_2, 2 ) .GT. 1 ) THEN CALL bdy_interp ( & grid%mu_2, & cids, cide, 1, 1, cjds, cjde, & cims, cime, 1, 1, cjms, cjme, & cips, cipe, 1, 1, cjps, cjpe, & ngrid%mu_2, & nids, nide, 1, 1, njds, njde, & nims, nime, 1, 1, njms, njme, & nips, nipe, 1, 1, njps, njpe, & config_flags%shw, ngrid%imask_nostag, & .FALSE., .FALSE., & ngrid%i_parent_start, ngrid%j_parent_start, & ngrid%parent_grid_ratio, ngrid%parent_grid_ratio & ,dummy_xs,ngrid%mu_bxs & ,dummy_xe,ngrid%mu_bxe & ,dummy_ys,ngrid%mu_bys & ,dummy_ye,ngrid%mu_bye & ,dummy_xs,ngrid%mu_btxs & ,dummy_xe,ngrid%mu_btxe & ,dummy_ys,ngrid%mu_btys & ,dummy_ye,ngrid%mu_btye & ,grid%dt,ngrid%dt & ) ENDIF DO itrace = PARAM_FIRST_SCALAR, num_moist IF ( SIZE( moist, 1 ) * SIZE( moist, 3 ) .GT. 1 ) THEN CALL bdy_interp ( & moist(grid%sm31,grid%sm32,grid%sm33,itrace), & cids, cide, ckds, ckde, cjds, cjde, & cims, cime, ckms, ckme, cjms, cjme, & cips, cipe, ckps, MIN( (ckde-1), ckpe ), cjps, cjpe, & ngrid%moist(ngrid%sm31,ngrid%sm32,ngrid%sm33,itrace), & nids, nide, nkds, nkde, njds, njde, & nims, nime, nkms, nkme, njms, njme, & nips, nipe, nkps, MIN( (nkde-1), nkpe ), njps, njpe, & config_flags%shw, ngrid%imask_nostag, & .FALSE., .FALSE., & ngrid%i_parent_start, ngrid%j_parent_start, & ngrid%parent_grid_ratio, ngrid%parent_grid_ratio & ,moist_bxs(cjms,1,1,itrace),ngrid%moist_bxs(njms,1,1,itrace) & ,moist_bxe(cjms,1,1,itrace),ngrid%moist_bxe(njms,1,1,itrace) & ,moist_bys(cims,1,1,itrace),ngrid%moist_bys(nims,1,1,itrace) & ,moist_bye(cims,1,1,itrace),ngrid%moist_bye(nims,1,1,itrace) & ,moist_btxs(cjms,1,1,itrace),ngrid%moist_btxs(njms,1,1,itrace) & ,moist_btxe(cjms,1,1,itrace),ngrid%moist_btxe(njms,1,1,itrace) & ,moist_btys(cims,1,1,itrace),ngrid%moist_btys(nims,1,1,itrace) & ,moist_btye(cims,1,1,itrace),ngrid%moist_btye(nims,1,1,itrace) & ,grid%dt,ngrid%dt & ) ENDIF ENDDO DO itrace = PARAM_FIRST_SCALAR, num_dfi_moist IF ( SIZE( dfi_moist, 1 ) * SIZE( dfi_moist, 3 ) .GT. 1 ) THEN CALL bdy_interp ( & dfi_moist(grid%sm31,grid%sm32,grid%sm33,itrace), & cids, cide, ckds, ckde, cjds, cjde, & cims, cime, ckms, ckme, cjms, cjme, & cips, cipe, ckps, MIN( (ckde-1), ckpe ), cjps, cjpe, & ngrid%dfi_moist(ngrid%sm31,ngrid%sm32,ngrid%sm33,itrace), & nids, nide, nkds, nkde, njds, njde, & nims, nime, nkms, nkme, njms, njme, & nips, nipe, nkps, MIN( (nkde-1), nkpe ), njps, njpe, & config_flags%shw, ngrid%imask_nostag, & .FALSE., .FALSE., & ngrid%i_parent_start, ngrid%j_parent_start, & ngrid%parent_grid_ratio, ngrid%parent_grid_ratio & ,dfi_moist_bxs(cjms,1,1,itrace),ngrid%dfi_moist_bxs(njms,1,1,itrace) & ,dfi_moist_bxe(cjms,1,1,itrace),ngrid%dfi_moist_bxe(njms,1,1,itrace) & ,dfi_moist_bys(cims,1,1,itrace),ngrid%dfi_moist_bys(nims,1,1,itrace) & ,dfi_moist_bye(cims,1,1,itrace),ngrid%dfi_moist_bye(nims,1,1,itrace) & ,dfi_moist_btxs(cjms,1,1,itrace),ngrid%dfi_moist_btxs(njms,1,1,itrace) & ,dfi_moist_btxe(cjms,1,1,itrace),ngrid%dfi_moist_btxe(njms,1,1,itrace) & ,dfi_moist_btys(cims,1,1,itrace),ngrid%dfi_moist_btys(nims,1,1,itrace) & ,dfi_moist_btye(cims,1,1,itrace),ngrid%dfi_moist_btye(nims,1,1,itrace) & ,grid%dt,ngrid%dt & ) ENDIF ENDDO DO itrace = PARAM_FIRST_SCALAR, num_scalar IF ( SIZE( scalar, 1 ) * SIZE( scalar, 3 ) .GT. 1 ) THEN CALL bdy_interp ( & scalar(grid%sm31,grid%sm32,grid%sm33,itrace), & cids, cide, ckds, ckde, cjds, cjde, & cims, cime, ckms, ckme, cjms, cjme, & cips, cipe, ckps, MIN( (ckde-1), ckpe ), cjps, cjpe, & ngrid%scalar(ngrid%sm31,ngrid%sm32,ngrid%sm33,itrace), & nids, nide, nkds, nkde, njds, njde, & nims, nime, nkms, nkme, njms, njme, & nips, nipe, nkps, MIN( (nkde-1), nkpe ), njps, njpe, & config_flags%shw, ngrid%imask_nostag, & .FALSE., .FALSE., & ngrid%i_parent_start, ngrid%j_parent_start, & ngrid%parent_grid_ratio, ngrid%parent_grid_ratio & ,scalar_bxs(cjms,1,1,itrace),ngrid%scalar_bxs(njms,1,1,itrace) & ,scalar_bxe(cjms,1,1,itrace),ngrid%scalar_bxe(njms,1,1,itrace) & ,scalar_bys(cims,1,1,itrace),ngrid%scalar_bys(nims,1,1,itrace) & ,scalar_bye(cims,1,1,itrace),ngrid%scalar_bye(nims,1,1,itrace) & ,scalar_btxs(cjms,1,1,itrace),ngrid%scalar_btxs(njms,1,1,itrace) & ,scalar_btxe(cjms,1,1,itrace),ngrid%scalar_btxe(njms,1,1,itrace) & ,scalar_btys(cims,1,1,itrace),ngrid%scalar_btys(nims,1,1,itrace) & ,scalar_btye(cims,1,1,itrace),ngrid%scalar_btye(nims,1,1,itrace) & ,grid%dt,ngrid%dt & ) ENDIF ENDDO DO itrace = PARAM_FIRST_SCALAR, num_dfi_scalar IF ( SIZE( dfi_scalar, 1 ) * SIZE( dfi_scalar, 3 ) .GT. 1 ) THEN CALL bdy_interp ( & dfi_scalar(grid%sm31,grid%sm32,grid%sm33,itrace), & cids, cide, ckds, ckde, cjds, cjde, & cims, cime, ckms, ckme, cjms, cjme, & cips, cipe, ckps, MIN( (ckde-1), ckpe ), cjps, cjpe, & ngrid%dfi_scalar(ngrid%sm31,ngrid%sm32,ngrid%sm33,itrace), & nids, nide, nkds, nkde, njds, njde, & nims, nime, nkms, nkme, njms, njme, & nips, nipe, nkps, MIN( (nkde-1), nkpe ), njps, njpe, & config_flags%shw, ngrid%imask_nostag, & .FALSE., .FALSE., & ngrid%i_parent_start, ngrid%j_parent_start, & ngrid%parent_grid_ratio, ngrid%parent_grid_ratio & ,dfi_scalar_bxs(cjms,1,1,itrace),ngrid%dfi_scalar_bxs(njms,1,1,itrace) & ,dfi_scalar_bxe(cjms,1,1,itrace),ngrid%dfi_scalar_bxe(njms,1,1,itrace) & ,dfi_scalar_bys(cims,1,1,itrace),ngrid%dfi_scalar_bys(nims,1,1,itrace) & ,dfi_scalar_bye(cims,1,1,itrace),ngrid%dfi_scalar_bye(nims,1,1,itrace) & ,dfi_scalar_btxs(cjms,1,1,itrace),ngrid%dfi_scalar_btxs(njms,1,1,itrace) & ,dfi_scalar_btxe(cjms,1,1,itrace),ngrid%dfi_scalar_btxe(njms,1,1,itrace) & ,dfi_scalar_btys(cims,1,1,itrace),ngrid%dfi_scalar_btys(nims,1,1,itrace) & ,dfi_scalar_btye(cims,1,1,itrace),ngrid%dfi_scalar_btye(nims,1,1,itrace) & ,grid%dt,ngrid%dt & ) ENDIF ENDDO IF ( SIZE( grid%ht_shad, 1 ) * SIZE( grid%ht_shad, 2 ) .GT. 1 ) THEN CALL bdy_interp ( & grid%ht_shad, & cids, cide, 1, 1, cjds, cjde, & cims, cime, 1, 1, cjms, cjme, & cips, cipe, 1, 1, cjps, cjpe, & ngrid%ht_shad, & nids, nide, 1, 1, njds, njde, & nims, nime, 1, 1, njms, njme, & nips, nipe, 1, 1, njps, njpe, & config_flags%shw, ngrid%imask_nostag, & .FALSE., .FALSE., & ngrid%i_parent_start, ngrid%j_parent_start, & ngrid%parent_grid_ratio, ngrid%parent_grid_ratio & ,dummy_xs,ngrid%ht_shad_bxs & ,dummy_xe,ngrid%ht_shad_bxe & ,dummy_ys,ngrid%ht_shad_bys & ,dummy_ye,ngrid%ht_shad_bye & ,dummy_xs,ngrid%ht_shad_btxs & ,dummy_xe,ngrid%ht_shad_btxe & ,dummy_ys,ngrid%ht_shad_btys & ,dummy_ye,ngrid%ht_shad_btye & ,grid%dt,ngrid%dt & ) ENDIF IF ( SIZE( grid%ru_tendf_stoch, 1 ) * SIZE( grid%ru_tendf_stoch, 3 ) .GT. 1 ) THEN CALL p2c ( & grid%ru_tendf_stoch, & cids, cide, ckds, ckde, cjds, cjde, & cims, cime, ckms, ckme, cjms, cjme, & cips, cipe, ckps, MIN( (ckde-1), ckpe ), cjps, cjpe, & ngrid%ru_tendf_stoch, & nids, nide, nkds, nkde, njds, njde, & nims, nime, nkms, nkme, njms, njme, & nips, nipe, nkps, MIN( (nkde-1), nkpe ), njps, njpe, & config_flags%shw, ngrid%imask_xstag, & .TRUE., .FALSE., & ngrid%i_parent_start, ngrid%j_parent_start, & ngrid%parent_grid_ratio, ngrid%parent_grid_ratio & ) ENDIF IF ( SIZE( grid%rv_tendf_stoch, 1 ) * SIZE( grid%rv_tendf_stoch, 3 ) .GT. 1 ) THEN CALL p2c ( & grid%rv_tendf_stoch, & cids, cide, ckds, ckde, cjds, cjde, & cims, cime, ckms, ckme, cjms, cjme, & cips, cipe, ckps, MIN( (ckde-1), ckpe ), cjps, cjpe, & ngrid%rv_tendf_stoch, & nids, nide, nkds, nkde, njds, njde, & nims, nime, nkms, nkme, njms, njme, & nips, nipe, nkps, MIN( (nkde-1), nkpe ), njps, njpe, & config_flags%shw, ngrid%imask_ystag, & .FALSE., .TRUE., & ngrid%i_parent_start, ngrid%j_parent_start, & ngrid%parent_grid_ratio, ngrid%parent_grid_ratio & ) ENDIF IF ( SIZE( grid%rt_tendf_stoch, 1 ) * SIZE( grid%rt_tendf_stoch, 3 ) .GT. 1 ) THEN CALL p2c ( & grid%rt_tendf_stoch, & cids, cide, ckds, ckde, cjds, cjde, & cims, cime, ckms, ckme, cjms, cjme, & cips, cipe, ckps, MIN( (ckde-1), ckpe ), cjps, cjpe, & ngrid%rt_tendf_stoch, & nids, nide, nkds, nkde, njds, njde, & nims, nime, nkms, nkme, njms, njme, & nips, nipe, nkps, MIN( (nkde-1), nkpe ), njps, njpe, & config_flags%shw, ngrid%imask_nostag, & .FALSE., .FALSE., & ngrid%i_parent_start, ngrid%j_parent_start, & ngrid%parent_grid_ratio, ngrid%parent_grid_ratio & ) ENDIF DO itrace = PARAM_FIRST_SCALAR, num_tracer IF ( SIZE( tracer, 1 ) * SIZE( tracer, 3 ) .GT. 1 ) THEN CALL bdy_interp ( & tracer(grid%sm31,grid%sm32,grid%sm33,itrace), & cids, cide, ckds, ckde, cjds, cjde, & cims, cime, ckms, ckme, cjms, cjme, & cips, cipe, ckps, MIN( (ckde-1), ckpe ), cjps, cjpe, & ngrid%tracer(ngrid%sm31,ngrid%sm32,ngrid%sm33,itrace), & nids, nide, nkds, nkde, njds, njde, & nims, nime, nkms, nkme, njms, njme, & nips, nipe, nkps, MIN( (nkde-1), nkpe ), njps, njpe, & config_flags%shw, ngrid%imask_nostag, & .FALSE., .FALSE., & ngrid%i_parent_start, ngrid%j_parent_start, & ngrid%parent_grid_ratio, ngrid%parent_grid_ratio & ,tracer_bxs(cjms,1,1,itrace),ngrid%tracer_bxs(njms,1,1,itrace) & ,tracer_bxe(cjms,1,1,itrace),ngrid%tracer_bxe(njms,1,1,itrace) & ,tracer_bys(cims,1,1,itrace),ngrid%tracer_bys(nims,1,1,itrace) & ,tracer_bye(cims,1,1,itrace),ngrid%tracer_bye(nims,1,1,itrace) & ,tracer_btxs(cjms,1,1,itrace),ngrid%tracer_btxs(njms,1,1,itrace) & ,tracer_btxe(cjms,1,1,itrace),ngrid%tracer_btxe(njms,1,1,itrace) & ,tracer_btys(cims,1,1,itrace),ngrid%tracer_btys(nims,1,1,itrace) & ,tracer_btye(cims,1,1,itrace),ngrid%tracer_btye(nims,1,1,itrace) & ,grid%dt,ngrid%dt & ) ENDIF ENDDO RETURN END SUBROUTINE force_domain_em_part2 SUBROUTINE interp_domain_em_part1 ( grid, intermediate_grid, ngrid, config_flags & ,moist,moist_bxs,moist_bxe,moist_bys,moist_bye,moist_btxs,moist_btxe,moist_btys,moist_btye,dfi_moist,dfi_moist_bxs,dfi_moist_bxe, & dfi_moist_bys,dfi_moist_bye,dfi_moist_btxs,dfi_moist_btxe,dfi_moist_btys,dfi_moist_btye,scalar,scalar_bxs,scalar_bxe,scalar_bys, & scalar_bye,scalar_btxs,scalar_btxe,scalar_btys,scalar_btye,dfi_scalar,dfi_scalar_bxs,dfi_scalar_bxe,dfi_scalar_bys, & dfi_scalar_bye,dfi_scalar_btxs,dfi_scalar_btxe,dfi_scalar_btys,dfi_scalar_btye,ozmixm,aerosolc_1,aerosolc_2,fdda3d,fdda2d, & advh_t,advz_t,nba_mij,nba_rij,chem,tracer,tracer_bxs,tracer_bxe,tracer_bys,tracer_bye,tracer_btxs,tracer_btxe,tracer_btys, & tracer_btye & ) USE module_state_description USE module_domain, ONLY : domain, get_ijk_from_grid USE module_configure, ONLY : grid_config_rec_type USE module_dm, ONLY : ntasks, ntasks_x, ntasks_y, itrace, local_communicator, & mytask, get_dm_max_halo_width USE module_timing IMPLICIT NONE TYPE(domain), POINTER :: grid TYPE(domain), POINTER :: intermediate_grid TYPE(domain), POINTER :: ngrid real ,DIMENSION(grid%sm31:grid%em31,grid%sm32:grid%em32,grid%sm33:grid%em33,num_moist) :: moist real ,DIMENSION(grid%sm33:grid%em33,grid%sm32:grid%em32,grid%spec_bdy_width,num_moist) :: moist_bxs real ,DIMENSION(grid%sm33:grid%em33,grid%sm32:grid%em32,grid%spec_bdy_width,num_moist) :: moist_bxe real ,DIMENSION(grid%sm31:grid%em31,grid%sm32:grid%em32,grid%spec_bdy_width,num_moist) :: moist_bys real ,DIMENSION(grid%sm31:grid%em31,grid%sm32:grid%em32,grid%spec_bdy_width,num_moist) :: moist_bye real ,DIMENSION(grid%sm33:grid%em33,grid%sm32:grid%em32,grid%spec_bdy_width,num_moist) :: moist_btxs real ,DIMENSION(grid%sm33:grid%em33,grid%sm32:grid%em32,grid%spec_bdy_width,num_moist) :: moist_btxe real ,DIMENSION(grid%sm31:grid%em31,grid%sm32:grid%em32,grid%spec_bdy_width,num_moist) :: moist_btys real ,DIMENSION(grid%sm31:grid%em31,grid%sm32:grid%em32,grid%spec_bdy_width,num_moist) :: moist_btye real ,DIMENSION(grid%sm31:grid%em31,grid%sm32:grid%em32,grid%sm33:grid%em33,num_dfi_moist) :: dfi_moist real ,DIMENSION(grid%sm33:grid%em33,grid%sm32:grid%em32,grid%spec_bdy_width,num_dfi_moist) :: dfi_moist_bxs real ,DIMENSION(grid%sm33:grid%em33,grid%sm32:grid%em32,grid%spec_bdy_width,num_dfi_moist) :: dfi_moist_bxe real ,DIMENSION(grid%sm31:grid%em31,grid%sm32:grid%em32,grid%spec_bdy_width,num_dfi_moist) :: dfi_moist_bys real ,DIMENSION(grid%sm31:grid%em31,grid%sm32:grid%em32,grid%spec_bdy_width,num_dfi_moist) :: dfi_moist_bye real ,DIMENSION(grid%sm33:grid%em33,grid%sm32:grid%em32,grid%spec_bdy_width,num_dfi_moist) :: dfi_moist_btxs real ,DIMENSION(grid%sm33:grid%em33,grid%sm32:grid%em32,grid%spec_bdy_width,num_dfi_moist) :: dfi_moist_btxe real ,DIMENSION(grid%sm31:grid%em31,grid%sm32:grid%em32,grid%spec_bdy_width,num_dfi_moist) :: dfi_moist_btys real ,DIMENSION(grid%sm31:grid%em31,grid%sm32:grid%em32,grid%spec_bdy_width,num_dfi_moist) :: dfi_moist_btye real ,DIMENSION(grid%sm31:grid%em31,grid%sm32:grid%em32,grid%sm33:grid%em33,num_scalar) :: scalar real ,DIMENSION(grid%sm33:grid%em33,grid%sm32:grid%em32,grid%spec_bdy_width,num_scalar) :: scalar_bxs real ,DIMENSION(grid%sm33:grid%em33,grid%sm32:grid%em32,grid%spec_bdy_width,num_scalar) :: scalar_bxe real ,DIMENSION(grid%sm31:grid%em31,grid%sm32:grid%em32,grid%spec_bdy_width,num_scalar) :: scalar_bys real ,DIMENSION(grid%sm31:grid%em31,grid%sm32:grid%em32,grid%spec_bdy_width,num_scalar) :: scalar_bye real ,DIMENSION(grid%sm33:grid%em33,grid%sm32:grid%em32,grid%spec_bdy_width,num_scalar) :: scalar_btxs real ,DIMENSION(grid%sm33:grid%em33,grid%sm32:grid%em32,grid%spec_bdy_width,num_scalar) :: scalar_btxe real ,DIMENSION(grid%sm31:grid%em31,grid%sm32:grid%em32,grid%spec_bdy_width,num_scalar) :: scalar_btys real ,DIMENSION(grid%sm31:grid%em31,grid%sm32:grid%em32,grid%spec_bdy_width,num_scalar) :: scalar_btye real ,DIMENSION(grid%sm31:grid%em31,grid%sm32:grid%em32,grid%sm33:grid%em33,num_dfi_scalar) :: dfi_scalar real ,DIMENSION(grid%sm33:grid%em33,grid%sm32:grid%em32,grid%spec_bdy_width,num_dfi_scalar) :: dfi_scalar_bxs real ,DIMENSION(grid%sm33:grid%em33,grid%sm32:grid%em32,grid%spec_bdy_width,num_dfi_scalar) :: dfi_scalar_bxe real ,DIMENSION(grid%sm31:grid%em31,grid%sm32:grid%em32,grid%spec_bdy_width,num_dfi_scalar) :: dfi_scalar_bys real ,DIMENSION(grid%sm31:grid%em31,grid%sm32:grid%em32,grid%spec_bdy_width,num_dfi_scalar) :: dfi_scalar_bye real ,DIMENSION(grid%sm33:grid%em33,grid%sm32:grid%em32,grid%spec_bdy_width,num_dfi_scalar) :: dfi_scalar_btxs real ,DIMENSION(grid%sm33:grid%em33,grid%sm32:grid%em32,grid%spec_bdy_width,num_dfi_scalar) :: dfi_scalar_btxe real ,DIMENSION(grid%sm31:grid%em31,grid%sm32:grid%em32,grid%spec_bdy_width,num_dfi_scalar) :: dfi_scalar_btys real ,DIMENSION(grid%sm31:grid%em31,grid%sm32:grid%em32,grid%spec_bdy_width,num_dfi_scalar) :: dfi_scalar_btye real ,DIMENSION(grid%sm31:grid%em31,1:grid%levsiz,grid%sm33:grid%em33,num_ozmixm) :: ozmixm real ,DIMENSION(grid%sm31:grid%em31,1:grid%paerlev,grid%sm33:grid%em33,num_aerosolc) :: aerosolc_1 real ,DIMENSION(grid%sm31:grid%em31,1:grid%paerlev,grid%sm33:grid%em33,num_aerosolc) :: aerosolc_2 real ,DIMENSION(grid%sm31:grid%em31,grid%sm32:grid%em32,grid%sm33:grid%em33,num_fdda3d) :: fdda3d real ,DIMENSION(grid%sm31:grid%em31,1:1,grid%sm33:grid%em33,num_fdda2d) :: fdda2d real ,DIMENSION(grid%sm31:grid%em31,grid%sm32:grid%em32,grid%sm33:grid%em33,num_advh_t) :: advh_t real ,DIMENSION(grid%sm31:grid%em31,grid%sm32:grid%em32,grid%sm33:grid%em33,num_advz_t) :: advz_t real ,DIMENSION(grid%sm31:grid%em31,grid%sm32:grid%em32,grid%sm33:grid%em33,num_nba_mij) :: nba_mij real ,DIMENSION(grid%sm31:grid%em31,grid%sm32:grid%em32,grid%sm33:grid%em33,num_nba_rij) :: nba_rij real ,DIMENSION(grid%sm31:grid%em31,grid%sm32:grid%em32,grid%sm33:grid%em33,num_chem) :: chem real ,DIMENSION(grid%sm31:grid%em31,grid%sm32:grid%em32,grid%sm33:grid%em33,num_tracer) :: tracer real ,DIMENSION(grid%sm33:grid%em33,grid%sm32:grid%em32,grid%spec_bdy_width,num_tracer) :: tracer_bxs real ,DIMENSION(grid%sm33:grid%em33,grid%sm32:grid%em32,grid%spec_bdy_width,num_tracer) :: tracer_bxe real ,DIMENSION(grid%sm31:grid%em31,grid%sm32:grid%em32,grid%spec_bdy_width,num_tracer) :: tracer_bys real ,DIMENSION(grid%sm31:grid%em31,grid%sm32:grid%em32,grid%spec_bdy_width,num_tracer) :: tracer_bye real ,DIMENSION(grid%sm33:grid%em33,grid%sm32:grid%em32,grid%spec_bdy_width,num_tracer) :: tracer_btxs real ,DIMENSION(grid%sm33:grid%em33,grid%sm32:grid%em32,grid%spec_bdy_width,num_tracer) :: tracer_btxe real ,DIMENSION(grid%sm31:grid%em31,grid%sm32:grid%em32,grid%spec_bdy_width,num_tracer) :: tracer_btys real ,DIMENSION(grid%sm31:grid%em31,grid%sm32:grid%em32,grid%spec_bdy_width,num_tracer) :: tracer_btye INTEGER nlev, msize INTEGER i,j,pig,pjg,cm,cn,nig,njg,retval,k INTEGER iparstrt,jparstrt,sw TYPE (grid_config_rec_type) :: config_flags REAL xv(500) INTEGER :: cids, cide, cjds, cjde, ckds, ckde, & cims, cime, cjms, cjme, ckms, ckme, & cips, cipe, cjps, cjpe, ckps, ckpe INTEGER :: iids, iide, ijds, ijde, ikds, ikde, & iims, iime, ijms, ijme, ikms, ikme, & iips, iipe, ijps, ijpe, ikps, ikpe 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 icoord, jcoord, idim_cd, jdim_cd, pgr INTEGER thisdomain_max_halo_width INTEGER local_comm, myproc, nproc CALL wrf_get_dm_communicator ( local_comm ) CALL wrf_get_myproc( myproc ) CALL wrf_get_nproc( nproc ) CALL get_ijk_from_grid ( grid , & cids, cide, cjds, cjde, ckds, ckde, & cims, cime, cjms, cjme, ckms, ckme, & cips, cipe, cjps, cjpe, ckps, ckpe ) CALL get_ijk_from_grid ( intermediate_grid , & iids, iide, ijds, ijde, ikds, ikde, & iims, iime, ijms, ijme, ikms, ikme, & iips, iipe, ijps, ijpe, ikps, ikpe ) CALL get_ijk_from_grid ( ngrid , & nids, nide, njds, njde, nkds, nkde, & nims, nime, njms, njme, nkms, nkme, & nips, nipe, njps, njpe, nkps, nkpe ) CALL nl_get_parent_grid_ratio ( ngrid%id, pgr ) CALL nl_get_i_parent_start ( intermediate_grid%id, iparstrt ) CALL nl_get_j_parent_start ( intermediate_grid%id, jparstrt ) CALL nl_get_shw ( intermediate_grid%id, sw ) icoord = iparstrt - sw jcoord = jparstrt - sw idim_cd = iide - iids + 1 jdim_cd = ijde - ijds + 1 nlev = ckde - ckds + 1 CALL get_dm_max_halo_width ( grid%id , thisdomain_max_halo_width ) msize = (31 + ((num_moist - PARAM_FIRST_SCALAR + 1)) & + ((num_dfi_moist - PARAM_FIRST_SCALAR + 1)) & + ((num_scalar - PARAM_FIRST_SCALAR + 1)) & + ((num_dfi_scalar - PARAM_FIRST_SCALAR + 1)) & + ((num_ozmixm - PARAM_FIRST_SCALAR + 1)) & + ((num_aerosolc - PARAM_FIRST_SCALAR + 1)) & + ((num_fdda3d - PARAM_FIRST_SCALAR + 1)) & + ((num_fdda2d - PARAM_FIRST_SCALAR + 1)) & + ((num_advh_t - PARAM_FIRST_SCALAR + 1)) & + ((num_advz_t - PARAM_FIRST_SCALAR + 1)) & + ((num_nba_mij - PARAM_FIRST_SCALAR + 1)) & + ((num_nba_rij - PARAM_FIRST_SCALAR + 1)) & + ((num_chem - PARAM_FIRST_SCALAR + 1)) & + ((num_tracer - PARAM_FIRST_SCALAR + 1)) )* nlev + 210 CALL rsl_lite_to_child_info( local_communicator, msize*4 & ,cips,cipe,cjps,cjpe & ,iids,iide,ijds,ijde & ,nids,nide,njds,njde & ,pgr , sw & ,ntasks_x,ntasks_y & ,thisdomain_max_halo_width & ,icoord,jcoord & ,idim_cd,jdim_cd & ,pig,pjg,retval ) DO while ( retval .eq. 1 ) IF ( SIZE(grid%lu_index) .GT. 1 ) THEN xv(1)=grid%lu_index(pig,pjg) CALL rsl_lite_to_child_msg(4,xv) ENDIF IF ( SIZE(grid%u_2) .GT. 1 ) THEN DO k = ckds,(ckde-1) xv(k)= grid%u_2(pig,k,pjg) ENDDO CALL rsl_lite_to_child_msg((((ckde-1))-(ckds)+1)*4,xv) ENDIF IF ( SIZE(grid%v_2) .GT. 1 ) THEN DO k = ckds,(ckde-1) xv(k)= grid%v_2(pig,k,pjg) ENDDO CALL rsl_lite_to_child_msg((((ckde-1))-(ckds)+1)*4,xv) ENDIF IF ( SIZE(grid%w_2) .GT. 1 ) THEN DO k = ckds,ckde xv(k)= grid%w_2(pig,k,pjg) ENDDO CALL rsl_lite_to_child_msg(((ckde)-(ckds)+1)*4,xv) ENDIF IF ( SIZE(grid%ph_2) .GT. 1 ) THEN DO k = ckds,ckde xv(k)= grid%ph_2(pig,k,pjg) ENDDO CALL rsl_lite_to_child_msg(((ckde)-(ckds)+1)*4,xv) ENDIF IF ( SIZE(grid%phb) .GT. 1 ) THEN DO k = ckds,ckde xv(k)= grid%phb(pig,k,pjg) ENDDO CALL rsl_lite_to_child_msg(((ckde)-(ckds)+1)*4,xv) ENDIF IF ( SIZE(grid%t_2) .GT. 1 ) THEN DO k = ckds,(ckde-1) xv(k)= grid%t_2(pig,k,pjg) ENDDO CALL rsl_lite_to_child_msg((((ckde-1))-(ckds)+1)*4,xv) ENDIF IF ( SIZE(grid%mu_2) .GT. 1 ) THEN xv(1)=grid%mu_2(pig,pjg) CALL rsl_lite_to_child_msg(4,xv) ENDIF IF ( SIZE(grid%mub) .GT. 1 ) THEN xv(1)=grid%mub(pig,pjg) CALL rsl_lite_to_child_msg(4,xv) ENDIF IF ( SIZE(grid%alb) .GT. 1 ) THEN DO k = ckds,(ckde-1) xv(k)= grid%alb(pig,k,pjg) ENDDO CALL rsl_lite_to_child_msg((((ckde-1))-(ckds)+1)*4,xv) ENDIF IF ( SIZE(grid%pb) .GT. 1 ) THEN DO k = ckds,(ckde-1) xv(k)= grid%pb(pig,k,pjg) ENDDO CALL rsl_lite_to_child_msg((((ckde-1))-(ckds)+1)*4,xv) ENDIF IF ( SIZE(grid%q2) .GT. 1 ) THEN xv(1)=grid%q2(pig,pjg) CALL rsl_lite_to_child_msg(4,xv) ENDIF IF ( SIZE(grid%t2) .GT. 1 ) THEN xv(1)=grid%t2(pig,pjg) CALL rsl_lite_to_child_msg(4,xv) ENDIF IF ( SIZE(grid%th2) .GT. 1 ) THEN xv(1)=grid%th2(pig,pjg) CALL rsl_lite_to_child_msg(4,xv) ENDIF IF ( SIZE(grid%psfc) .GT. 1 ) THEN xv(1)=grid%psfc(pig,pjg) CALL rsl_lite_to_child_msg(4,xv) ENDIF IF ( SIZE(grid%u10) .GT. 1 ) THEN xv(1)=grid%u10(pig,pjg) CALL rsl_lite_to_child_msg(4,xv) ENDIF IF ( SIZE(grid%v10) .GT. 1 ) THEN xv(1)=grid%v10(pig,pjg) CALL rsl_lite_to_child_msg(4,xv) ENDIF DO itrace = PARAM_FIRST_SCALAR, num_moist DO k = ckds,(ckde-1) xv(k)= moist(pig,k,pjg,itrace) ENDDO CALL rsl_lite_to_child_msg((((ckde-1))-(ckds)+1)*4,xv) ENDDO DO itrace = PARAM_FIRST_SCALAR, num_dfi_moist DO k = ckds,(ckde-1) xv(k)= dfi_moist(pig,k,pjg,itrace) ENDDO CALL rsl_lite_to_child_msg((((ckde-1))-(ckds)+1)*4,xv) ENDDO DO itrace = PARAM_FIRST_SCALAR, num_scalar DO k = ckds,(ckde-1) xv(k)= scalar(pig,k,pjg,itrace) ENDDO CALL rsl_lite_to_child_msg((((ckde-1))-(ckds)+1)*4,xv) ENDDO DO itrace = PARAM_FIRST_SCALAR, num_dfi_scalar DO k = ckds,(ckde-1) xv(k)= dfi_scalar(pig,k,pjg,itrace) ENDDO CALL rsl_lite_to_child_msg((((ckde-1))-(ckds)+1)*4,xv) ENDDO IF ( SIZE(grid%toposlpx) .GT. 1 ) THEN xv(1)=grid%toposlpx(pig,pjg) CALL rsl_lite_to_child_msg(4,xv) ENDIF IF ( SIZE(grid%toposlpy) .GT. 1 ) THEN xv(1)=grid%toposlpy(pig,pjg) CALL rsl_lite_to_child_msg(4,xv) ENDIF IF ( SIZE(grid%slope) .GT. 1 ) THEN xv(1)=grid%slope(pig,pjg) CALL rsl_lite_to_child_msg(4,xv) ENDIF IF ( SIZE(grid%slp_azi) .GT. 1 ) THEN xv(1)=grid%slp_azi(pig,pjg) CALL rsl_lite_to_child_msg(4,xv) ENDIF IF ( SIZE(grid%shdmax) .GT. 1 ) THEN xv(1)=grid%shdmax(pig,pjg) CALL rsl_lite_to_child_msg(4,xv) ENDIF IF ( SIZE(grid%shdmin) .GT. 1 ) THEN xv(1)=grid%shdmin(pig,pjg) CALL rsl_lite_to_child_msg(4,xv) ENDIF IF ( SIZE(grid%tslb) .GT. 1 ) THEN DO k = 1,config_flags%num_soil_layers xv(k)= grid%tslb(pig,k,pjg) ENDDO CALL rsl_lite_to_child_msg(((config_flags%num_soil_layers)-(1)+1)*4,xv) ENDIF IF ( SIZE(grid%smois) .GT. 1 ) THEN DO k = 1,config_flags%num_soil_layers xv(k)= grid%smois(pig,k,pjg) ENDDO CALL rsl_lite_to_child_msg(((config_flags%num_soil_layers)-(1)+1)*4,xv) ENDIF IF ( SIZE(grid%sh2o) .GT. 1 ) THEN DO k = 1,config_flags%num_soil_layers xv(k)= grid%sh2o(pig,k,pjg) ENDDO CALL rsl_lite_to_child_msg(((config_flags%num_soil_layers)-(1)+1)*4,xv) ENDIF IF ( SIZE(grid%smcrel) .GT. 1 ) THEN DO k = 1,config_flags%num_soil_layers xv(k)= grid%smcrel(pig,k,pjg) ENDDO CALL rsl_lite_to_child_msg(((config_flags%num_soil_layers)-(1)+1)*4,xv) ENDIF IF ( SIZE(grid%xice) .GT. 1 ) THEN xv(1)=grid%xice(pig,pjg) CALL rsl_lite_to_child_msg(4,xv) ENDIF IF ( SIZE(grid%xicem) .GT. 1 ) THEN xv(1)=grid%xicem(pig,pjg) CALL rsl_lite_to_child_msg(4,xv) ENDIF IF ( SIZE(grid%smstav) .GT. 1 ) THEN xv(1)=grid%smstav(pig,pjg) CALL rsl_lite_to_child_msg(4,xv) ENDIF IF ( SIZE(grid%sfcrunoff) .GT. 1 ) THEN xv(1)=grid%sfcrunoff(pig,pjg) CALL rsl_lite_to_child_msg(4,xv) ENDIF IF ( SIZE(grid%udrunoff) .GT. 1 ) THEN xv(1)=grid%udrunoff(pig,pjg) CALL rsl_lite_to_child_msg(4,xv) ENDIF IF ( SIZE(grid%ivgtyp) .GT. 1 ) THEN xv(1)=grid%ivgtyp(pig,pjg) CALL rsl_lite_to_child_msg(4,xv) ENDIF IF ( SIZE(grid%isltyp) .GT. 1 ) THEN xv(1)=grid%isltyp(pig,pjg) CALL rsl_lite_to_child_msg(4,xv) ENDIF IF ( SIZE(grid%vegfra) .GT. 1 ) THEN xv(1)=grid%vegfra(pig,pjg) CALL rsl_lite_to_child_msg(4,xv) ENDIF IF ( SIZE(grid%acgrdflx) .GT. 1 ) THEN xv(1)=grid%acgrdflx(pig,pjg) CALL rsl_lite_to_child_msg(4,xv) ENDIF IF ( SIZE(grid%acsnow) .GT. 1 ) THEN xv(1)=grid%acsnow(pig,pjg) CALL rsl_lite_to_child_msg(4,xv) ENDIF IF ( SIZE(grid%acsnom) .GT. 1 ) THEN xv(1)=grid%acsnom(pig,pjg) CALL rsl_lite_to_child_msg(4,xv) ENDIF IF ( SIZE(grid%snow) .GT. 1 ) THEN xv(1)=grid%snow(pig,pjg) CALL rsl_lite_to_child_msg(4,xv) ENDIF IF ( SIZE(grid%snowh) .GT. 1 ) THEN xv(1)=grid%snowh(pig,pjg) CALL rsl_lite_to_child_msg(4,xv) ENDIF IF ( SIZE(grid%canwat) .GT. 1 ) THEN xv(1)=grid%canwat(pig,pjg) CALL rsl_lite_to_child_msg(4,xv) ENDIF IF ( SIZE(grid%sstsk) .GT. 1 ) THEN xv(1)=grid%sstsk(pig,pjg) CALL rsl_lite_to_child_msg(4,xv) ENDIF IF ( SIZE(grid%tr_urb2d) .GT. 1 ) THEN xv(1)=grid%tr_urb2d(pig,pjg) CALL rsl_lite_to_child_msg(4,xv) ENDIF IF ( SIZE(grid%tb_urb2d) .GT. 1 ) THEN xv(1)=grid%tb_urb2d(pig,pjg) CALL rsl_lite_to_child_msg(4,xv) ENDIF IF ( SIZE(grid%tg_urb2d) .GT. 1 ) THEN xv(1)=grid%tg_urb2d(pig,pjg) CALL rsl_lite_to_child_msg(4,xv) ENDIF IF ( SIZE(grid%tc_urb2d) .GT. 1 ) THEN xv(1)=grid%tc_urb2d(pig,pjg) CALL rsl_lite_to_child_msg(4,xv) ENDIF IF ( SIZE(grid%qc_urb2d) .GT. 1 ) THEN xv(1)=grid%qc_urb2d(pig,pjg) CALL rsl_lite_to_child_msg(4,xv) ENDIF IF ( SIZE(grid%uc_urb2d) .GT. 1 ) THEN xv(1)=grid%uc_urb2d(pig,pjg) CALL rsl_lite_to_child_msg(4,xv) ENDIF IF ( SIZE(grid%xxxr_urb2d) .GT. 1 ) THEN xv(1)=grid%xxxr_urb2d(pig,pjg) CALL rsl_lite_to_child_msg(4,xv) ENDIF IF ( SIZE(grid%xxxb_urb2d) .GT. 1 ) THEN xv(1)=grid%xxxb_urb2d(pig,pjg) CALL rsl_lite_to_child_msg(4,xv) ENDIF IF ( SIZE(grid%xxxg_urb2d) .GT. 1 ) THEN xv(1)=grid%xxxg_urb2d(pig,pjg) CALL rsl_lite_to_child_msg(4,xv) ENDIF IF ( SIZE(grid%xxxc_urb2d) .GT. 1 ) THEN xv(1)=grid%xxxc_urb2d(pig,pjg) CALL rsl_lite_to_child_msg(4,xv) ENDIF IF ( SIZE(grid%trl_urb3d) .GT. 1 ) THEN DO k = 1,config_flags%num_soil_layers xv(k)= grid%trl_urb3d(pig,k,pjg) ENDDO CALL rsl_lite_to_child_msg(((config_flags%num_soil_layers)-(1)+1)*4,xv) ENDIF IF ( SIZE(grid%tbl_urb3d) .GT. 1 ) THEN DO k = 1,config_flags%num_soil_layers xv(k)= grid%tbl_urb3d(pig,k,pjg) ENDDO CALL rsl_lite_to_child_msg(((config_flags%num_soil_layers)-(1)+1)*4,xv) ENDIF IF ( SIZE(grid%tgl_urb3d) .GT. 1 ) THEN DO k = 1,config_flags%num_soil_layers xv(k)= grid%tgl_urb3d(pig,k,pjg) ENDDO CALL rsl_lite_to_child_msg(((config_flags%num_soil_layers)-(1)+1)*4,xv) ENDIF IF ( SIZE(grid%frc_urb2d) .GT. 1 ) THEN xv(1)=grid%frc_urb2d(pig,pjg) CALL rsl_lite_to_child_msg(4,xv) ENDIF IF ( SIZE(grid%utype_urb2d) .GT. 1 ) THEN xv(1)=grid%utype_urb2d(pig,pjg) CALL rsl_lite_to_child_msg(4,xv) ENDIF IF ( SIZE(grid%var2d) .GT. 1 ) THEN xv(1)=grid%var2d(pig,pjg) CALL rsl_lite_to_child_msg(4,xv) ENDIF IF ( SIZE(grid%oc12d) .GT. 1 ) THEN xv(1)=grid%oc12d(pig,pjg) CALL rsl_lite_to_child_msg(4,xv) ENDIF IF ( SIZE(grid%oa1) .GT. 1 ) THEN xv(1)=grid%oa1(pig,pjg) CALL rsl_lite_to_child_msg(4,xv) ENDIF IF ( SIZE(grid%oa2) .GT. 1 ) THEN xv(1)=grid%oa2(pig,pjg) CALL rsl_lite_to_child_msg(4,xv) ENDIF IF ( SIZE(grid%oa3) .GT. 1 ) THEN xv(1)=grid%oa3(pig,pjg) CALL rsl_lite_to_child_msg(4,xv) ENDIF IF ( SIZE(grid%oa4) .GT. 1 ) THEN xv(1)=grid%oa4(pig,pjg) CALL rsl_lite_to_child_msg(4,xv) ENDIF IF ( SIZE(grid%ol1) .GT. 1 ) THEN xv(1)=grid%ol1(pig,pjg) CALL rsl_lite_to_child_msg(4,xv) ENDIF IF ( SIZE(grid%ol2) .GT. 1 ) THEN xv(1)=grid%ol2(pig,pjg) CALL rsl_lite_to_child_msg(4,xv) ENDIF IF ( SIZE(grid%ol3) .GT. 1 ) THEN xv(1)=grid%ol3(pig,pjg) CALL rsl_lite_to_child_msg(4,xv) ENDIF IF ( SIZE(grid%ol4) .GT. 1 ) THEN xv(1)=grid%ol4(pig,pjg) CALL rsl_lite_to_child_msg(4,xv) ENDIF IF ( SIZE(grid%f_ice_phy) .GT. 1 ) THEN DO k = ckds,(ckde-1) xv(k)= grid%f_ice_phy(pig,k,pjg) ENDDO CALL rsl_lite_to_child_msg((((ckde-1))-(ckds)+1)*4,xv) ENDIF IF ( SIZE(grid%f_rain_phy) .GT. 1 ) THEN DO k = ckds,(ckde-1) xv(k)= grid%f_rain_phy(pig,k,pjg) ENDDO CALL rsl_lite_to_child_msg((((ckde-1))-(ckds)+1)*4,xv) ENDIF IF ( SIZE(grid%f_rimef_phy) .GT. 1 ) THEN DO k = ckds,(ckde-1) xv(k)= grid%f_rimef_phy(pig,k,pjg) ENDDO CALL rsl_lite_to_child_msg((((ckde-1))-(ckds)+1)*4,xv) ENDIF IF ( SIZE(grid%h_diabatic) .GT. 1 ) THEN DO k = ckds,(ckde-1) xv(k)= grid%h_diabatic(pig,k,pjg) ENDDO CALL rsl_lite_to_child_msg((((ckde-1))-(ckds)+1)*4,xv) ENDIF IF ( SIZE(grid%msft) .GT. 1 ) THEN xv(1)=grid%msft(pig,pjg) CALL rsl_lite_to_child_msg(4,xv) ENDIF IF ( SIZE(grid%msfu) .GT. 1 ) THEN xv(1)=grid%msfu(pig,pjg) CALL rsl_lite_to_child_msg(4,xv) ENDIF IF ( SIZE(grid%msfv) .GT. 1 ) THEN xv(1)=grid%msfv(pig,pjg) CALL rsl_lite_to_child_msg(4,xv) ENDIF IF ( SIZE(grid%msftx) .GT. 1 ) THEN xv(1)=grid%msftx(pig,pjg) CALL rsl_lite_to_child_msg(4,xv) ENDIF IF ( SIZE(grid%msfty) .GT. 1 ) THEN xv(1)=grid%msfty(pig,pjg) CALL rsl_lite_to_child_msg(4,xv) ENDIF IF ( SIZE(grid%msfux) .GT. 1 ) THEN xv(1)=grid%msfux(pig,pjg) CALL rsl_lite_to_child_msg(4,xv) ENDIF IF ( SIZE(grid%msfuy) .GT. 1 ) THEN xv(1)=grid%msfuy(pig,pjg) CALL rsl_lite_to_child_msg(4,xv) ENDIF IF ( SIZE(grid%msfvx) .GT. 1 ) THEN xv(1)=grid%msfvx(pig,pjg) CALL rsl_lite_to_child_msg(4,xv) ENDIF IF ( SIZE(grid%msfvx_inv) .GT. 1 ) THEN xv(1)=grid%msfvx_inv(pig,pjg) CALL rsl_lite_to_child_msg(4,xv) ENDIF IF ( SIZE(grid%msfvy) .GT. 1 ) THEN xv(1)=grid%msfvy(pig,pjg) CALL rsl_lite_to_child_msg(4,xv) ENDIF IF ( SIZE(grid%f) .GT. 1 ) THEN xv(1)=grid%f(pig,pjg) CALL rsl_lite_to_child_msg(4,xv) ENDIF IF ( SIZE(grid%e) .GT. 1 ) THEN xv(1)=grid%e(pig,pjg) CALL rsl_lite_to_child_msg(4,xv) ENDIF IF ( SIZE(grid%sina) .GT. 1 ) THEN xv(1)=grid%sina(pig,pjg) CALL rsl_lite_to_child_msg(4,xv) ENDIF IF ( SIZE(grid%cosa) .GT. 1 ) THEN xv(1)=grid%cosa(pig,pjg) CALL rsl_lite_to_child_msg(4,xv) ENDIF IF ( SIZE(grid%ht) .GT. 1 ) THEN xv(1)=grid%ht(pig,pjg) CALL rsl_lite_to_child_msg(4,xv) ENDIF IF ( SIZE(grid%ht_shad) .GT. 1 ) THEN xv(1)=grid%ht_shad(pig,pjg) CALL rsl_lite_to_child_msg(4,xv) ENDIF IF ( SIZE(grid%tsk) .GT. 1 ) THEN xv(1)=grid%tsk(pig,pjg) CALL rsl_lite_to_child_msg(4,xv) ENDIF IF ( SIZE(grid%rainc) .GT. 1 ) THEN xv(1)=grid%rainc(pig,pjg) CALL rsl_lite_to_child_msg(4,xv) ENDIF IF ( SIZE(grid%rainsh) .GT. 1 ) THEN xv(1)=grid%rainsh(pig,pjg) CALL rsl_lite_to_child_msg(4,xv) ENDIF IF ( SIZE(grid%rainnc) .GT. 1 ) THEN xv(1)=grid%rainnc(pig,pjg) CALL rsl_lite_to_child_msg(4,xv) ENDIF IF ( SIZE(grid%i_rainc) .GT. 1 ) THEN xv(1)=grid%i_rainc(pig,pjg) CALL rsl_lite_to_child_msg(4,xv) ENDIF IF ( SIZE(grid%i_rainnc) .GT. 1 ) THEN xv(1)=grid%i_rainnc(pig,pjg) CALL rsl_lite_to_child_msg(4,xv) ENDIF IF ( SIZE(grid%snownc) .GT. 1 ) THEN xv(1)=grid%snownc(pig,pjg) CALL rsl_lite_to_child_msg(4,xv) ENDIF IF ( SIZE(grid%graupelnc) .GT. 1 ) THEN xv(1)=grid%graupelnc(pig,pjg) CALL rsl_lite_to_child_msg(4,xv) ENDIF IF ( SIZE(grid%hailnc) .GT. 1 ) THEN xv(1)=grid%hailnc(pig,pjg) CALL rsl_lite_to_child_msg(4,xv) ENDIF IF ( SIZE(grid%refl_10cm) .GT. 1 ) THEN DO k = ckds,(ckde-1) xv(k)= grid%refl_10cm(pig,k,pjg) ENDDO CALL rsl_lite_to_child_msg((((ckde-1))-(ckds)+1)*4,xv) ENDIF IF ( SIZE(grid%rthraten) .GT. 1 ) THEN DO k = ckds,(ckde-1) xv(k)= grid%rthraten(pig,k,pjg) ENDDO CALL rsl_lite_to_child_msg((((ckde-1))-(ckds)+1)*4,xv) ENDIF IF ( SIZE(grid%swdown) .GT. 1 ) THEN xv(1)=grid%swdown(pig,pjg) CALL rsl_lite_to_child_msg(4,xv) ENDIF IF ( SIZE(grid%gsw) .GT. 1 ) THEN xv(1)=grid%gsw(pig,pjg) CALL rsl_lite_to_child_msg(4,xv) ENDIF IF ( SIZE(grid%glw) .GT. 1 ) THEN xv(1)=grid%glw(pig,pjg) CALL rsl_lite_to_child_msg(4,xv) ENDIF IF ( SIZE(grid%swnorm) .GT. 1 ) THEN xv(1)=grid%swnorm(pig,pjg) CALL rsl_lite_to_child_msg(4,xv) ENDIF IF ( SIZE(grid%acswupt) .GT. 1 ) THEN xv(1)=grid%acswupt(pig,pjg) CALL rsl_lite_to_child_msg(4,xv) ENDIF IF ( SIZE(grid%acswuptc) .GT. 1 ) THEN xv(1)=grid%acswuptc(pig,pjg) CALL rsl_lite_to_child_msg(4,xv) ENDIF IF ( SIZE(grid%acswdnt) .GT. 1 ) THEN xv(1)=grid%acswdnt(pig,pjg) CALL rsl_lite_to_child_msg(4,xv) ENDIF IF ( SIZE(grid%acswdntc) .GT. 1 ) THEN xv(1)=grid%acswdntc(pig,pjg) CALL rsl_lite_to_child_msg(4,xv) ENDIF IF ( SIZE(grid%acswupb) .GT. 1 ) THEN xv(1)=grid%acswupb(pig,pjg) CALL rsl_lite_to_child_msg(4,xv) ENDIF IF ( SIZE(grid%acswupbc) .GT. 1 ) THEN xv(1)=grid%acswupbc(pig,pjg) CALL rsl_lite_to_child_msg(4,xv) ENDIF IF ( SIZE(grid%acswdnb) .GT. 1 ) THEN xv(1)=grid%acswdnb(pig,pjg) CALL rsl_lite_to_child_msg(4,xv) ENDIF IF ( SIZE(grid%acswdnbc) .GT. 1 ) THEN xv(1)=grid%acswdnbc(pig,pjg) CALL rsl_lite_to_child_msg(4,xv) ENDIF IF ( SIZE(grid%aclwupt) .GT. 1 ) THEN xv(1)=grid%aclwupt(pig,pjg) CALL rsl_lite_to_child_msg(4,xv) ENDIF IF ( SIZE(grid%aclwuptc) .GT. 1 ) THEN xv(1)=grid%aclwuptc(pig,pjg) CALL rsl_lite_to_child_msg(4,xv) ENDIF IF ( SIZE(grid%aclwdnt) .GT. 1 ) THEN xv(1)=grid%aclwdnt(pig,pjg) CALL rsl_lite_to_child_msg(4,xv) ENDIF IF ( SIZE(grid%aclwdntc) .GT. 1 ) THEN xv(1)=grid%aclwdntc(pig,pjg) CALL rsl_lite_to_child_msg(4,xv) ENDIF IF ( SIZE(grid%aclwupb) .GT. 1 ) THEN xv(1)=grid%aclwupb(pig,pjg) CALL rsl_lite_to_child_msg(4,xv) ENDIF IF ( SIZE(grid%aclwupbc) .GT. 1 ) THEN xv(1)=grid%aclwupbc(pig,pjg) CALL rsl_lite_to_child_msg(4,xv) ENDIF IF ( SIZE(grid%aclwdnb) .GT. 1 ) THEN xv(1)=grid%aclwdnb(pig,pjg) CALL rsl_lite_to_child_msg(4,xv) ENDIF IF ( SIZE(grid%aclwdnbc) .GT. 1 ) THEN xv(1)=grid%aclwdnbc(pig,pjg) CALL rsl_lite_to_child_msg(4,xv) ENDIF IF ( SIZE(grid%i_acswupt) .GT. 1 ) THEN xv(1)=grid%i_acswupt(pig,pjg) CALL rsl_lite_to_child_msg(4,xv) ENDIF IF ( SIZE(grid%i_acswuptc) .GT. 1 ) THEN xv(1)=grid%i_acswuptc(pig,pjg) CALL rsl_lite_to_child_msg(4,xv) ENDIF IF ( SIZE(grid%i_acswdnt) .GT. 1 ) THEN xv(1)=grid%i_acswdnt(pig,pjg) CALL rsl_lite_to_child_msg(4,xv) ENDIF IF ( SIZE(grid%i_acswdntc) .GT. 1 ) THEN xv(1)=grid%i_acswdntc(pig,pjg) CALL rsl_lite_to_child_msg(4,xv) ENDIF IF ( SIZE(grid%i_acswupb) .GT. 1 ) THEN xv(1)=grid%i_acswupb(pig,pjg) CALL rsl_lite_to_child_msg(4,xv) ENDIF IF ( SIZE(grid%i_acswupbc) .GT. 1 ) THEN xv(1)=grid%i_acswupbc(pig,pjg) CALL rsl_lite_to_child_msg(4,xv) ENDIF IF ( SIZE(grid%i_acswdnb) .GT. 1 ) THEN xv(1)=grid%i_acswdnb(pig,pjg) CALL rsl_lite_to_child_msg(4,xv) ENDIF IF ( SIZE(grid%i_acswdnbc) .GT. 1 ) THEN xv(1)=grid%i_acswdnbc(pig,pjg) CALL rsl_lite_to_child_msg(4,xv) ENDIF IF ( SIZE(grid%i_aclwupt) .GT. 1 ) THEN xv(1)=grid%i_aclwupt(pig,pjg) CALL rsl_lite_to_child_msg(4,xv) ENDIF IF ( SIZE(grid%i_aclwuptc) .GT. 1 ) THEN xv(1)=grid%i_aclwuptc(pig,pjg) CALL rsl_lite_to_child_msg(4,xv) ENDIF IF ( SIZE(grid%i_aclwdnt) .GT. 1 ) THEN xv(1)=grid%i_aclwdnt(pig,pjg) CALL rsl_lite_to_child_msg(4,xv) ENDIF IF ( SIZE(grid%i_aclwdntc) .GT. 1 ) THEN xv(1)=grid%i_aclwdntc(pig,pjg) CALL rsl_lite_to_child_msg(4,xv) ENDIF IF ( SIZE(grid%i_aclwupb) .GT. 1 ) THEN xv(1)=grid%i_aclwupb(pig,pjg) CALL rsl_lite_to_child_msg(4,xv) ENDIF IF ( SIZE(grid%i_aclwupbc) .GT. 1 ) THEN xv(1)=grid%i_aclwupbc(pig,pjg) CALL rsl_lite_to_child_msg(4,xv) ENDIF IF ( SIZE(grid%i_aclwdnb) .GT. 1 ) THEN xv(1)=grid%i_aclwdnb(pig,pjg) CALL rsl_lite_to_child_msg(4,xv) ENDIF IF ( SIZE(grid%i_aclwdnbc) .GT. 1 ) THEN xv(1)=grid%i_aclwdnbc(pig,pjg) CALL rsl_lite_to_child_msg(4,xv) ENDIF IF ( SIZE(grid%swupt) .GT. 1 ) THEN xv(1)=grid%swupt(pig,pjg) CALL rsl_lite_to_child_msg(4,xv) ENDIF IF ( SIZE(grid%swuptc) .GT. 1 ) THEN xv(1)=grid%swuptc(pig,pjg) CALL rsl_lite_to_child_msg(4,xv) ENDIF IF ( SIZE(grid%swdnt) .GT. 1 ) THEN xv(1)=grid%swdnt(pig,pjg) CALL rsl_lite_to_child_msg(4,xv) ENDIF IF ( SIZE(grid%swdntc) .GT. 1 ) THEN xv(1)=grid%swdntc(pig,pjg) CALL rsl_lite_to_child_msg(4,xv) ENDIF IF ( SIZE(grid%swupb) .GT. 1 ) THEN xv(1)=grid%swupb(pig,pjg) CALL rsl_lite_to_child_msg(4,xv) ENDIF IF ( SIZE(grid%swupbc) .GT. 1 ) THEN xv(1)=grid%swupbc(pig,pjg) CALL rsl_lite_to_child_msg(4,xv) ENDIF IF ( SIZE(grid%swdnb) .GT. 1 ) THEN xv(1)=grid%swdnb(pig,pjg) CALL rsl_lite_to_child_msg(4,xv) ENDIF IF ( SIZE(grid%swdnbc) .GT. 1 ) THEN xv(1)=grid%swdnbc(pig,pjg) CALL rsl_lite_to_child_msg(4,xv) ENDIF IF ( SIZE(grid%lwupt) .GT. 1 ) THEN xv(1)=grid%lwupt(pig,pjg) CALL rsl_lite_to_child_msg(4,xv) ENDIF IF ( SIZE(grid%lwuptc) .GT. 1 ) THEN xv(1)=grid%lwuptc(pig,pjg) CALL rsl_lite_to_child_msg(4,xv) ENDIF IF ( SIZE(grid%lwdnt) .GT. 1 ) THEN xv(1)=grid%lwdnt(pig,pjg) CALL rsl_lite_to_child_msg(4,xv) ENDIF IF ( SIZE(grid%lwdntc) .GT. 1 ) THEN xv(1)=grid%lwdntc(pig,pjg) CALL rsl_lite_to_child_msg(4,xv) ENDIF IF ( SIZE(grid%lwupb) .GT. 1 ) THEN xv(1)=grid%lwupb(pig,pjg) CALL rsl_lite_to_child_msg(4,xv) ENDIF IF ( SIZE(grid%lwupbc) .GT. 1 ) THEN xv(1)=grid%lwupbc(pig,pjg) CALL rsl_lite_to_child_msg(4,xv) ENDIF IF ( SIZE(grid%lwdnb) .GT. 1 ) THEN xv(1)=grid%lwdnb(pig,pjg) CALL rsl_lite_to_child_msg(4,xv) ENDIF IF ( SIZE(grid%lwdnbc) .GT. 1 ) THEN xv(1)=grid%lwdnbc(pig,pjg) CALL rsl_lite_to_child_msg(4,xv) ENDIF IF ( SIZE(grid%xlat) .GT. 1 ) THEN xv(1)=grid%xlat(pig,pjg) CALL rsl_lite_to_child_msg(4,xv) ENDIF IF ( SIZE(grid%xlong) .GT. 1 ) THEN xv(1)=grid%xlong(pig,pjg) CALL rsl_lite_to_child_msg(4,xv) ENDIF IF ( SIZE(grid%xlat_u) .GT. 1 ) THEN xv(1)=grid%xlat_u(pig,pjg) CALL rsl_lite_to_child_msg(4,xv) ENDIF IF ( SIZE(grid%xlong_u) .GT. 1 ) THEN xv(1)=grid%xlong_u(pig,pjg) CALL rsl_lite_to_child_msg(4,xv) ENDIF IF ( SIZE(grid%xlat_v) .GT. 1 ) THEN xv(1)=grid%xlat_v(pig,pjg) CALL rsl_lite_to_child_msg(4,xv) ENDIF IF ( SIZE(grid%xlong_v) .GT. 1 ) THEN xv(1)=grid%xlong_v(pig,pjg) CALL rsl_lite_to_child_msg(4,xv) ENDIF IF ( SIZE(grid%clat) .GT. 1 ) THEN xv(1)=grid%clat(pig,pjg) CALL rsl_lite_to_child_msg(4,xv) ENDIF IF ( SIZE(grid%isnowxy) .GT. 1 ) THEN xv(1)=grid%isnowxy(pig,pjg) CALL rsl_lite_to_child_msg(4,xv) ENDIF IF ( SIZE(grid%tvxy) .GT. 1 ) THEN xv(1)=grid%tvxy(pig,pjg) CALL rsl_lite_to_child_msg(4,xv) ENDIF IF ( SIZE(grid%tgxy) .GT. 1 ) THEN xv(1)=grid%tgxy(pig,pjg) CALL rsl_lite_to_child_msg(4,xv) ENDIF IF ( SIZE(grid%canliqxy) .GT. 1 ) THEN xv(1)=grid%canliqxy(pig,pjg) CALL rsl_lite_to_child_msg(4,xv) ENDIF IF ( SIZE(grid%canicexy) .GT. 1 ) THEN xv(1)=grid%canicexy(pig,pjg) CALL rsl_lite_to_child_msg(4,xv) ENDIF IF ( SIZE(grid%eahxy) .GT. 1 ) THEN xv(1)=grid%eahxy(pig,pjg) CALL rsl_lite_to_child_msg(4,xv) ENDIF IF ( SIZE(grid%tahxy) .GT. 1 ) THEN xv(1)=grid%tahxy(pig,pjg) CALL rsl_lite_to_child_msg(4,xv) ENDIF IF ( SIZE(grid%cmxy) .GT. 1 ) THEN xv(1)=grid%cmxy(pig,pjg) CALL rsl_lite_to_child_msg(4,xv) ENDIF IF ( SIZE(grid%chxy) .GT. 1 ) THEN xv(1)=grid%chxy(pig,pjg) CALL rsl_lite_to_child_msg(4,xv) ENDIF IF ( SIZE(grid%fwetxy) .GT. 1 ) THEN xv(1)=grid%fwetxy(pig,pjg) CALL rsl_lite_to_child_msg(4,xv) ENDIF IF ( SIZE(grid%sneqvoxy) .GT. 1 ) THEN xv(1)=grid%sneqvoxy(pig,pjg) CALL rsl_lite_to_child_msg(4,xv) ENDIF IF ( SIZE(grid%alboldxy) .GT. 1 ) THEN xv(1)=grid%alboldxy(pig,pjg) CALL rsl_lite_to_child_msg(4,xv) ENDIF IF ( SIZE(grid%qsnowxy) .GT. 1 ) THEN xv(1)=grid%qsnowxy(pig,pjg) CALL rsl_lite_to_child_msg(4,xv) ENDIF IF ( SIZE(grid%wslakexy) .GT. 1 ) THEN xv(1)=grid%wslakexy(pig,pjg) CALL rsl_lite_to_child_msg(4,xv) ENDIF IF ( SIZE(grid%zwtxy) .GT. 1 ) THEN xv(1)=grid%zwtxy(pig,pjg) CALL rsl_lite_to_child_msg(4,xv) ENDIF IF ( SIZE(grid%waxy) .GT. 1 ) THEN xv(1)=grid%waxy(pig,pjg) CALL rsl_lite_to_child_msg(4,xv) ENDIF IF ( SIZE(grid%wtxy) .GT. 1 ) THEN xv(1)=grid%wtxy(pig,pjg) CALL rsl_lite_to_child_msg(4,xv) ENDIF IF ( SIZE(grid%zsnsoxy) .GT. 1 ) THEN DO k = 1,config_flags%num_snso_layers xv(k)= grid%zsnsoxy(pig,k,pjg) ENDDO CALL rsl_lite_to_child_msg(((config_flags%num_snso_layers)-(1)+1)*4,xv) ENDIF IF ( SIZE(grid%tsnoxy) .GT. 1 ) THEN DO k = 1,config_flags%num_snow_layers xv(k)= grid%tsnoxy(pig,k,pjg) ENDDO CALL rsl_lite_to_child_msg(((config_flags%num_snow_layers)-(1)+1)*4,xv) ENDIF IF ( SIZE(grid%snicexy) .GT. 1 ) THEN DO k = 1,config_flags%num_snow_layers xv(k)= grid%snicexy(pig,k,pjg) ENDDO CALL rsl_lite_to_child_msg(((config_flags%num_snow_layers)-(1)+1)*4,xv) ENDIF IF ( SIZE(grid%snliqxy) .GT. 1 ) THEN DO k = 1,config_flags%num_snow_layers xv(k)= grid%snliqxy(pig,k,pjg) ENDDO CALL rsl_lite_to_child_msg(((config_flags%num_snow_layers)-(1)+1)*4,xv) ENDIF IF ( SIZE(grid%lfmassxy) .GT. 1 ) THEN xv(1)=grid%lfmassxy(pig,pjg) CALL rsl_lite_to_child_msg(4,xv) ENDIF IF ( SIZE(grid%rtmassxy) .GT. 1 ) THEN xv(1)=grid%rtmassxy(pig,pjg) CALL rsl_lite_to_child_msg(4,xv) ENDIF IF ( SIZE(grid%stmassxy) .GT. 1 ) THEN xv(1)=grid%stmassxy(pig,pjg) CALL rsl_lite_to_child_msg(4,xv) ENDIF IF ( SIZE(grid%woodxy) .GT. 1 ) THEN xv(1)=grid%woodxy(pig,pjg) CALL rsl_lite_to_child_msg(4,xv) ENDIF IF ( SIZE(grid%stblcpxy) .GT. 1 ) THEN xv(1)=grid%stblcpxy(pig,pjg) CALL rsl_lite_to_child_msg(4,xv) ENDIF IF ( SIZE(grid%fastcpxy) .GT. 1 ) THEN xv(1)=grid%fastcpxy(pig,pjg) CALL rsl_lite_to_child_msg(4,xv) ENDIF IF ( SIZE(grid%xsaixy) .GT. 1 ) THEN xv(1)=grid%xsaixy(pig,pjg) CALL rsl_lite_to_child_msg(4,xv) ENDIF IF ( SIZE(grid%tradxy) .GT. 1 ) THEN xv(1)=grid%tradxy(pig,pjg) CALL rsl_lite_to_child_msg(4,xv) ENDIF IF ( SIZE(grid%tsxy) .GT. 1 ) THEN xv(1)=grid%tsxy(pig,pjg) CALL rsl_lite_to_child_msg(4,xv) ENDIF IF ( SIZE(grid%neexy) .GT. 1 ) THEN xv(1)=grid%neexy(pig,pjg) CALL rsl_lite_to_child_msg(4,xv) ENDIF IF ( SIZE(grid%gppxy) .GT. 1 ) THEN xv(1)=grid%gppxy(pig,pjg) CALL rsl_lite_to_child_msg(4,xv) ENDIF IF ( SIZE(grid%nppxy) .GT. 1 ) THEN xv(1)=grid%nppxy(pig,pjg) CALL rsl_lite_to_child_msg(4,xv) ENDIF IF ( SIZE(grid%fvegxy) .GT. 1 ) THEN xv(1)=grid%fvegxy(pig,pjg) CALL rsl_lite_to_child_msg(4,xv) ENDIF IF ( SIZE(grid%qinxy) .GT. 1 ) THEN xv(1)=grid%qinxy(pig,pjg) CALL rsl_lite_to_child_msg(4,xv) ENDIF IF ( SIZE(grid%runsfxy) .GT. 1 ) THEN xv(1)=grid%runsfxy(pig,pjg) CALL rsl_lite_to_child_msg(4,xv) ENDIF IF ( SIZE(grid%runsbxy) .GT. 1 ) THEN xv(1)=grid%runsbxy(pig,pjg) CALL rsl_lite_to_child_msg(4,xv) ENDIF IF ( SIZE(grid%ecanxy) .GT. 1 ) THEN xv(1)=grid%ecanxy(pig,pjg) CALL rsl_lite_to_child_msg(4,xv) ENDIF IF ( SIZE(grid%edirxy) .GT. 1 ) THEN xv(1)=grid%edirxy(pig,pjg) CALL rsl_lite_to_child_msg(4,xv) ENDIF IF ( SIZE(grid%etranxy) .GT. 1 ) THEN xv(1)=grid%etranxy(pig,pjg) CALL rsl_lite_to_child_msg(4,xv) ENDIF IF ( SIZE(grid%fsaxy) .GT. 1 ) THEN xv(1)=grid%fsaxy(pig,pjg) CALL rsl_lite_to_child_msg(4,xv) ENDIF IF ( SIZE(grid%firaxy) .GT. 1 ) THEN xv(1)=grid%firaxy(pig,pjg) CALL rsl_lite_to_child_msg(4,xv) ENDIF IF ( SIZE(grid%aparxy) .GT. 1 ) THEN xv(1)=grid%aparxy(pig,pjg) CALL rsl_lite_to_child_msg(4,xv) ENDIF IF ( SIZE(grid%psnxy) .GT. 1 ) THEN xv(1)=grid%psnxy(pig,pjg) CALL rsl_lite_to_child_msg(4,xv) ENDIF IF ( SIZE(grid%savxy) .GT. 1 ) THEN xv(1)=grid%savxy(pig,pjg) CALL rsl_lite_to_child_msg(4,xv) ENDIF IF ( SIZE(grid%sagxy) .GT. 1 ) THEN xv(1)=grid%sagxy(pig,pjg) CALL rsl_lite_to_child_msg(4,xv) ENDIF IF ( SIZE(grid%fsnoxy) .GT. 1 ) THEN xv(1)=grid%fsnoxy(pig,pjg) CALL rsl_lite_to_child_msg(4,xv) ENDIF IF ( SIZE(grid%t2mvxy) .GT. 1 ) THEN xv(1)=grid%t2mvxy(pig,pjg) CALL rsl_lite_to_child_msg(4,xv) ENDIF IF ( SIZE(grid%t2mbxy) .GT. 1 ) THEN xv(1)=grid%t2mbxy(pig,pjg) CALL rsl_lite_to_child_msg(4,xv) ENDIF IF ( SIZE(grid%q2mvxy) .GT. 1 ) THEN xv(1)=grid%q2mvxy(pig,pjg) CALL rsl_lite_to_child_msg(4,xv) ENDIF IF ( SIZE(grid%q2mbxy) .GT. 1 ) THEN xv(1)=grid%q2mbxy(pig,pjg) CALL rsl_lite_to_child_msg(4,xv) ENDIF IF ( SIZE(grid%chstarxy) .GT. 1 ) THEN xv(1)=grid%chstarxy(pig,pjg) CALL rsl_lite_to_child_msg(4,xv) ENDIF IF ( SIZE(grid%rssunxy) .GT. 1 ) THEN xv(1)=grid%rssunxy(pig,pjg) CALL rsl_lite_to_child_msg(4,xv) ENDIF IF ( SIZE(grid%rsshaxy) .GT. 1 ) THEN xv(1)=grid%rsshaxy(pig,pjg) CALL rsl_lite_to_child_msg(4,xv) ENDIF IF ( SIZE(grid%bgapxy) .GT. 1 ) THEN xv(1)=grid%bgapxy(pig,pjg) CALL rsl_lite_to_child_msg(4,xv) ENDIF IF ( SIZE(grid%wgapxy) .GT. 1 ) THEN xv(1)=grid%wgapxy(pig,pjg) CALL rsl_lite_to_child_msg(4,xv) ENDIF IF ( SIZE(grid%gapxy) .GT. 1 ) THEN xv(1)=grid%gapxy(pig,pjg) CALL rsl_lite_to_child_msg(4,xv) ENDIF IF ( SIZE(grid%tgvxy) .GT. 1 ) THEN xv(1)=grid%tgvxy(pig,pjg) CALL rsl_lite_to_child_msg(4,xv) ENDIF IF ( SIZE(grid%tgbxy) .GT. 1 ) THEN xv(1)=grid%tgbxy(pig,pjg) CALL rsl_lite_to_child_msg(4,xv) ENDIF IF ( SIZE(grid%chvxy) .GT. 1 ) THEN xv(1)=grid%chvxy(pig,pjg) CALL rsl_lite_to_child_msg(4,xv) ENDIF IF ( SIZE(grid%chbxy) .GT. 1 ) THEN xv(1)=grid%chbxy(pig,pjg) CALL rsl_lite_to_child_msg(4,xv) ENDIF IF ( SIZE(grid%tmn) .GT. 1 ) THEN xv(1)=grid%tmn(pig,pjg) CALL rsl_lite_to_child_msg(4,xv) ENDIF IF ( SIZE(grid%tyr) .GT. 1 ) THEN xv(1)=grid%tyr(pig,pjg) CALL rsl_lite_to_child_msg(4,xv) ENDIF IF ( SIZE(grid%tyra) .GT. 1 ) THEN xv(1)=grid%tyra(pig,pjg) CALL rsl_lite_to_child_msg(4,xv) ENDIF IF ( SIZE(grid%tdly) .GT. 1 ) THEN xv(1)=grid%tdly(pig,pjg) CALL rsl_lite_to_child_msg(4,xv) ENDIF IF ( SIZE(grid%tlag) .GT. 1 ) THEN DO k = 1,config_flags%lagday xv(k)= grid%tlag(pig,k,pjg) ENDDO CALL rsl_lite_to_child_msg(((config_flags%lagday)-(1)+1)*4,xv) ENDIF IF ( SIZE(grid%xland) .GT. 1 ) THEN xv(1)=grid%xland(pig,pjg) CALL rsl_lite_to_child_msg(4,xv) ENDIF IF ( SIZE(grid%achfx) .GT. 1 ) THEN xv(1)=grid%achfx(pig,pjg) CALL rsl_lite_to_child_msg(4,xv) ENDIF IF ( SIZE(grid%aclhf) .GT. 1 ) THEN xv(1)=grid%aclhf(pig,pjg) CALL rsl_lite_to_child_msg(4,xv) ENDIF IF ( SIZE(grid%snowc) .GT. 1 ) THEN xv(1)=grid%snowc(pig,pjg) CALL rsl_lite_to_child_msg(4,xv) ENDIF IF ( SIZE(grid%tml) .GT. 1 ) THEN xv(1)=grid%tml(pig,pjg) CALL rsl_lite_to_child_msg(4,xv) ENDIF IF ( SIZE(grid%t0ml) .GT. 1 ) THEN xv(1)=grid%t0ml(pig,pjg) CALL rsl_lite_to_child_msg(4,xv) ENDIF IF ( SIZE(grid%hml) .GT. 1 ) THEN xv(1)=grid%hml(pig,pjg) CALL rsl_lite_to_child_msg(4,xv) ENDIF IF ( SIZE(grid%h0ml) .GT. 1 ) THEN xv(1)=grid%h0ml(pig,pjg) CALL rsl_lite_to_child_msg(4,xv) ENDIF IF ( SIZE(grid%huml) .GT. 1 ) THEN xv(1)=grid%huml(pig,pjg) CALL rsl_lite_to_child_msg(4,xv) ENDIF IF ( SIZE(grid%hvml) .GT. 1 ) THEN xv(1)=grid%hvml(pig,pjg) CALL rsl_lite_to_child_msg(4,xv) ENDIF IF ( SIZE(grid%tmoml) .GT. 1 ) THEN xv(1)=grid%tmoml(pig,pjg) CALL rsl_lite_to_child_msg(4,xv) ENDIF IF ( SIZE(grid%vertstrucc) .GT. 1 ) THEN DO k = ckds,(ckde-1) xv(k)= grid%vertstrucc(pig,k,pjg) ENDDO CALL rsl_lite_to_child_msg((((ckde-1))-(ckds)+1)*4,xv) ENDIF IF ( SIZE(grid%vertstrucs) .GT. 1 ) THEN DO k = ckds,(ckde-1) xv(k)= grid%vertstrucs(pig,k,pjg) ENDDO CALL rsl_lite_to_child_msg((((ckde-1))-(ckds)+1)*4,xv) ENDIF IF ( SIZE(grid%ru_tendf_stoch) .GT. 1 ) THEN DO k = ckds,(ckde-1) xv(k)= grid%ru_tendf_stoch(pig,k,pjg) ENDDO CALL rsl_lite_to_child_msg((((ckde-1))-(ckds)+1)*4,xv) ENDIF IF ( SIZE(grid%rv_tendf_stoch) .GT. 1 ) THEN DO k = ckds,(ckde-1) xv(k)= grid%rv_tendf_stoch(pig,k,pjg) ENDDO CALL rsl_lite_to_child_msg((((ckde-1))-(ckds)+1)*4,xv) ENDIF IF ( SIZE(grid%rt_tendf_stoch) .GT. 1 ) THEN DO k = ckds,(ckde-1) xv(k)= grid%rt_tendf_stoch(pig,k,pjg) ENDDO CALL rsl_lite_to_child_msg((((ckde-1))-(ckds)+1)*4,xv) ENDIF IF ( SIZE(grid%landmask) .GT. 1 ) THEN xv(1)=grid%landmask(pig,pjg) CALL rsl_lite_to_child_msg(4,xv) ENDIF IF ( SIZE(grid%sst) .GT. 1 ) THEN xv(1)=grid%sst(pig,pjg) CALL rsl_lite_to_child_msg(4,xv) ENDIF DO itrace = PARAM_FIRST_SCALAR, num_tracer DO k = ckds,(ckde-1) xv(k)= tracer(pig,k,pjg,itrace) ENDDO CALL rsl_lite_to_child_msg((((ckde-1))-(ckds)+1)*4,xv) ENDDO CALL rsl_lite_to_child_info( local_communicator, msize*4 & ,cips,cipe,cjps,cjpe & ,iids,iide,ijds,ijde & ,nids,nide,njds,njde & ,pgr , sw & ,ntasks_x,ntasks_y & ,thisdomain_max_halo_width & ,icoord,jcoord & ,idim_cd,jdim_cd & ,pig,pjg,retval ) ENDDO CALL rsl_lite_bcast_msgs( myproc, nproc, local_comm ) RETURN END SUBROUTINE interp_domain_em_part1 SUBROUTINE interp_domain_em_part2 ( grid, ngrid, config_flags & ,moist,moist_bxs,moist_bxe,moist_bys,moist_bye,moist_btxs,moist_btxe,moist_btys,moist_btye,dfi_moist,dfi_moist_bxs,dfi_moist_bxe, & dfi_moist_bys,dfi_moist_bye,dfi_moist_btxs,dfi_moist_btxe,dfi_moist_btys,dfi_moist_btye,scalar,scalar_bxs,scalar_bxe,scalar_bys, & scalar_bye,scalar_btxs,scalar_btxe,scalar_btys,scalar_btye,dfi_scalar,dfi_scalar_bxs,dfi_scalar_bxe,dfi_scalar_bys, & dfi_scalar_bye,dfi_scalar_btxs,dfi_scalar_btxe,dfi_scalar_btys,dfi_scalar_btye,ozmixm,aerosolc_1,aerosolc_2,fdda3d,fdda2d, & advh_t,advz_t,nba_mij,nba_rij,chem,tracer,tracer_bxs,tracer_bxe,tracer_bys,tracer_bye,tracer_btxs,tracer_btxe,tracer_btys, & tracer_btye & ) USE module_state_description USE module_domain, ONLY : domain, get_ijk_from_grid USE module_configure, ONLY : grid_config_rec_type USE module_dm, ONLY : ntasks, ntasks_x, ntasks_y, itrace, local_communicator, & mytask, get_dm_max_halo_width USE module_comm_nesting_dm, ONLY : halo_interp_down_sub IMPLICIT NONE TYPE(domain), POINTER :: grid TYPE(domain), POINTER :: ngrid real ,DIMENSION(grid%sm31:grid%em31,grid%sm32:grid%em32,grid%sm33:grid%em33,num_moist) :: moist real ,DIMENSION(grid%sm33:grid%em33,grid%sm32:grid%em32,grid%spec_bdy_width,num_moist) :: moist_bxs real ,DIMENSION(grid%sm33:grid%em33,grid%sm32:grid%em32,grid%spec_bdy_width,num_moist) :: moist_bxe real ,DIMENSION(grid%sm31:grid%em31,grid%sm32:grid%em32,grid%spec_bdy_width,num_moist) :: moist_bys real ,DIMENSION(grid%sm31:grid%em31,grid%sm32:grid%em32,grid%spec_bdy_width,num_moist) :: moist_bye real ,DIMENSION(grid%sm33:grid%em33,grid%sm32:grid%em32,grid%spec_bdy_width,num_moist) :: moist_btxs real ,DIMENSION(grid%sm33:grid%em33,grid%sm32:grid%em32,grid%spec_bdy_width,num_moist) :: moist_btxe real ,DIMENSION(grid%sm31:grid%em31,grid%sm32:grid%em32,grid%spec_bdy_width,num_moist) :: moist_btys real ,DIMENSION(grid%sm31:grid%em31,grid%sm32:grid%em32,grid%spec_bdy_width,num_moist) :: moist_btye real ,DIMENSION(grid%sm31:grid%em31,grid%sm32:grid%em32,grid%sm33:grid%em33,num_dfi_moist) :: dfi_moist real ,DIMENSION(grid%sm33:grid%em33,grid%sm32:grid%em32,grid%spec_bdy_width,num_dfi_moist) :: dfi_moist_bxs real ,DIMENSION(grid%sm33:grid%em33,grid%sm32:grid%em32,grid%spec_bdy_width,num_dfi_moist) :: dfi_moist_bxe real ,DIMENSION(grid%sm31:grid%em31,grid%sm32:grid%em32,grid%spec_bdy_width,num_dfi_moist) :: dfi_moist_bys real ,DIMENSION(grid%sm31:grid%em31,grid%sm32:grid%em32,grid%spec_bdy_width,num_dfi_moist) :: dfi_moist_bye real ,DIMENSION(grid%sm33:grid%em33,grid%sm32:grid%em32,grid%spec_bdy_width,num_dfi_moist) :: dfi_moist_btxs real ,DIMENSION(grid%sm33:grid%em33,grid%sm32:grid%em32,grid%spec_bdy_width,num_dfi_moist) :: dfi_moist_btxe real ,DIMENSION(grid%sm31:grid%em31,grid%sm32:grid%em32,grid%spec_bdy_width,num_dfi_moist) :: dfi_moist_btys real ,DIMENSION(grid%sm31:grid%em31,grid%sm32:grid%em32,grid%spec_bdy_width,num_dfi_moist) :: dfi_moist_btye real ,DIMENSION(grid%sm31:grid%em31,grid%sm32:grid%em32,grid%sm33:grid%em33,num_scalar) :: scalar real ,DIMENSION(grid%sm33:grid%em33,grid%sm32:grid%em32,grid%spec_bdy_width,num_scalar) :: scalar_bxs real ,DIMENSION(grid%sm33:grid%em33,grid%sm32:grid%em32,grid%spec_bdy_width,num_scalar) :: scalar_bxe real ,DIMENSION(grid%sm31:grid%em31,grid%sm32:grid%em32,grid%spec_bdy_width,num_scalar) :: scalar_bys real ,DIMENSION(grid%sm31:grid%em31,grid%sm32:grid%em32,grid%spec_bdy_width,num_scalar) :: scalar_bye real ,DIMENSION(grid%sm33:grid%em33,grid%sm32:grid%em32,grid%spec_bdy_width,num_scalar) :: scalar_btxs real ,DIMENSION(grid%sm33:grid%em33,grid%sm32:grid%em32,grid%spec_bdy_width,num_scalar) :: scalar_btxe real ,DIMENSION(grid%sm31:grid%em31,grid%sm32:grid%em32,grid%spec_bdy_width,num_scalar) :: scalar_btys real ,DIMENSION(grid%sm31:grid%em31,grid%sm32:grid%em32,grid%spec_bdy_width,num_scalar) :: scalar_btye real ,DIMENSION(grid%sm31:grid%em31,grid%sm32:grid%em32,grid%sm33:grid%em33,num_dfi_scalar) :: dfi_scalar real ,DIMENSION(grid%sm33:grid%em33,grid%sm32:grid%em32,grid%spec_bdy_width,num_dfi_scalar) :: dfi_scalar_bxs real ,DIMENSION(grid%sm33:grid%em33,grid%sm32:grid%em32,grid%spec_bdy_width,num_dfi_scalar) :: dfi_scalar_bxe real ,DIMENSION(grid%sm31:grid%em31,grid%sm32:grid%em32,grid%spec_bdy_width,num_dfi_scalar) :: dfi_scalar_bys real ,DIMENSION(grid%sm31:grid%em31,grid%sm32:grid%em32,grid%spec_bdy_width,num_dfi_scalar) :: dfi_scalar_bye real ,DIMENSION(grid%sm33:grid%em33,grid%sm32:grid%em32,grid%spec_bdy_width,num_dfi_scalar) :: dfi_scalar_btxs real ,DIMENSION(grid%sm33:grid%em33,grid%sm32:grid%em32,grid%spec_bdy_width,num_dfi_scalar) :: dfi_scalar_btxe real ,DIMENSION(grid%sm31:grid%em31,grid%sm32:grid%em32,grid%spec_bdy_width,num_dfi_scalar) :: dfi_scalar_btys real ,DIMENSION(grid%sm31:grid%em31,grid%sm32:grid%em32,grid%spec_bdy_width,num_dfi_scalar) :: dfi_scalar_btye real ,DIMENSION(grid%sm31:grid%em31,1:grid%levsiz,grid%sm33:grid%em33,num_ozmixm) :: ozmixm real ,DIMENSION(grid%sm31:grid%em31,1:grid%paerlev,grid%sm33:grid%em33,num_aerosolc) :: aerosolc_1 real ,DIMENSION(grid%sm31:grid%em31,1:grid%paerlev,grid%sm33:grid%em33,num_aerosolc) :: aerosolc_2 real ,DIMENSION(grid%sm31:grid%em31,grid%sm32:grid%em32,grid%sm33:grid%em33,num_fdda3d) :: fdda3d real ,DIMENSION(grid%sm31:grid%em31,1:1,grid%sm33:grid%em33,num_fdda2d) :: fdda2d real ,DIMENSION(grid%sm31:grid%em31,grid%sm32:grid%em32,grid%sm33:grid%em33,num_advh_t) :: advh_t real ,DIMENSION(grid%sm31:grid%em31,grid%sm32:grid%em32,grid%sm33:grid%em33,num_advz_t) :: advz_t real ,DIMENSION(grid%sm31:grid%em31,grid%sm32:grid%em32,grid%sm33:grid%em33,num_nba_mij) :: nba_mij real ,DIMENSION(grid%sm31:grid%em31,grid%sm32:grid%em32,grid%sm33:grid%em33,num_nba_rij) :: nba_rij real ,DIMENSION(grid%sm31:grid%em31,grid%sm32:grid%em32,grid%sm33:grid%em33,num_chem) :: chem real ,DIMENSION(grid%sm31:grid%em31,grid%sm32:grid%em32,grid%sm33:grid%em33,num_tracer) :: tracer real ,DIMENSION(grid%sm33:grid%em33,grid%sm32:grid%em32,grid%spec_bdy_width,num_tracer) :: tracer_bxs real ,DIMENSION(grid%sm33:grid%em33,grid%sm32:grid%em32,grid%spec_bdy_width,num_tracer) :: tracer_bxe real ,DIMENSION(grid%sm31:grid%em31,grid%sm32:grid%em32,grid%spec_bdy_width,num_tracer) :: tracer_bys real ,DIMENSION(grid%sm31:grid%em31,grid%sm32:grid%em32,grid%spec_bdy_width,num_tracer) :: tracer_bye real ,DIMENSION(grid%sm33:grid%em33,grid%sm32:grid%em32,grid%spec_bdy_width,num_tracer) :: tracer_btxs real ,DIMENSION(grid%sm33:grid%em33,grid%sm32:grid%em32,grid%spec_bdy_width,num_tracer) :: tracer_btxe real ,DIMENSION(grid%sm31:grid%em31,grid%sm32:grid%em32,grid%spec_bdy_width,num_tracer) :: tracer_btys real ,DIMENSION(grid%sm31:grid%em31,grid%sm32:grid%em32,grid%spec_bdy_width,num_tracer) :: tracer_btye INTEGER nlev, msize INTEGER i,j,pig,pjg,cm,cn,nig,njg,retval,k TYPE (grid_config_rec_type) :: config_flags REAL xv(500) 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 :: ids, ide, jds, jde, kds, kde, & ims, ime, jms, jme, kms, kme, & ips, ipe, jps, jpe, kps, kpe INTEGER idim1,idim2,idim3,idim4,idim5,idim6,idim7 INTEGER myproc INTEGER ierr INTEGER thisdomain_max_halo_width CALL get_ijk_from_grid ( grid , & cids, cide, cjds, cjde, ckds, ckde, & cims, cime, cjms, cjme, ckms, ckme, & cips, cipe, cjps, cjpe, ckps, ckpe ) 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 CALL get_dm_max_halo_width ( ngrid%id , thisdomain_max_halo_width ) CALL rsl_lite_from_parent_info(pig,pjg,retval) DO while ( retval .eq. 1 ) IF ( SIZE(grid%lu_index) .GT. 1 ) THEN CALL rsl_lite_from_parent_msg(4,xv) grid%lu_index(pig,pjg) = xv(1) ENDIF IF ( SIZE(grid%u_2) .GT. 1 ) THEN CALL rsl_lite_from_parent_msg((((ckde-1))-(ckds)+1)*4,xv) DO k = ckds,(ckde-1) grid%u_2(pig,k,pjg) = xv(k) ENDDO ENDIF IF ( SIZE(grid%v_2) .GT. 1 ) THEN CALL rsl_lite_from_parent_msg((((ckde-1))-(ckds)+1)*4,xv) DO k = ckds,(ckde-1) grid%v_2(pig,k,pjg) = xv(k) ENDDO ENDIF IF ( SIZE(grid%w_2) .GT. 1 ) THEN CALL rsl_lite_from_parent_msg(((ckde)-(ckds)+1)*4,xv) DO k = ckds,ckde grid%w_2(pig,k,pjg) = xv(k) ENDDO ENDIF IF ( SIZE(grid%ph_2) .GT. 1 ) THEN CALL rsl_lite_from_parent_msg(((ckde)-(ckds)+1)*4,xv) DO k = ckds,ckde grid%ph_2(pig,k,pjg) = xv(k) ENDDO ENDIF IF ( SIZE(grid%phb) .GT. 1 ) THEN CALL rsl_lite_from_parent_msg(((ckde)-(ckds)+1)*4,xv) DO k = ckds,ckde grid%phb(pig,k,pjg) = xv(k) ENDDO ENDIF IF ( SIZE(grid%t_2) .GT. 1 ) THEN CALL rsl_lite_from_parent_msg((((ckde-1))-(ckds)+1)*4,xv) DO k = ckds,(ckde-1) grid%t_2(pig,k,pjg) = xv(k) ENDDO ENDIF IF ( SIZE(grid%mu_2) .GT. 1 ) THEN CALL rsl_lite_from_parent_msg(4,xv) grid%mu_2(pig,pjg) = xv(1) ENDIF IF ( SIZE(grid%mub) .GT. 1 ) THEN CALL rsl_lite_from_parent_msg(4,xv) grid%mub(pig,pjg) = xv(1) ENDIF IF ( SIZE(grid%alb) .GT. 1 ) THEN CALL rsl_lite_from_parent_msg((((ckde-1))-(ckds)+1)*4,xv) DO k = ckds,(ckde-1) grid%alb(pig,k,pjg) = xv(k) ENDDO ENDIF IF ( SIZE(grid%pb) .GT. 1 ) THEN CALL rsl_lite_from_parent_msg((((ckde-1))-(ckds)+1)*4,xv) DO k = ckds,(ckde-1) grid%pb(pig,k,pjg) = xv(k) ENDDO ENDIF IF ( SIZE(grid%q2) .GT. 1 ) THEN CALL rsl_lite_from_parent_msg(4,xv) grid%q2(pig,pjg) = xv(1) ENDIF IF ( SIZE(grid%t2) .GT. 1 ) THEN CALL rsl_lite_from_parent_msg(4,xv) grid%t2(pig,pjg) = xv(1) ENDIF IF ( SIZE(grid%th2) .GT. 1 ) THEN CALL rsl_lite_from_parent_msg(4,xv) grid%th2(pig,pjg) = xv(1) ENDIF IF ( SIZE(grid%psfc) .GT. 1 ) THEN CALL rsl_lite_from_parent_msg(4,xv) grid%psfc(pig,pjg) = xv(1) ENDIF IF ( SIZE(grid%u10) .GT. 1 ) THEN CALL rsl_lite_from_parent_msg(4,xv) grid%u10(pig,pjg) = xv(1) ENDIF IF ( SIZE(grid%v10) .GT. 1 ) THEN CALL rsl_lite_from_parent_msg(4,xv) grid%v10(pig,pjg) = xv(1) ENDIF DO itrace = PARAM_FIRST_SCALAR, num_moist CALL rsl_lite_from_parent_msg((((ckde-1))-(ckds)+1)*4,xv) DO k = ckds,(ckde-1) moist(pig,k,pjg,itrace) = xv(k) ENDDO ENDDO DO itrace = PARAM_FIRST_SCALAR, num_dfi_moist CALL rsl_lite_from_parent_msg((((ckde-1))-(ckds)+1)*4,xv) DO k = ckds,(ckde-1) dfi_moist(pig,k,pjg,itrace) = xv(k) ENDDO ENDDO DO itrace = PARAM_FIRST_SCALAR, num_scalar CALL rsl_lite_from_parent_msg((((ckde-1))-(ckds)+1)*4,xv) DO k = ckds,(ckde-1) scalar(pig,k,pjg,itrace) = xv(k) ENDDO ENDDO DO itrace = PARAM_FIRST_SCALAR, num_dfi_scalar CALL rsl_lite_from_parent_msg((((ckde-1))-(ckds)+1)*4,xv) DO k = ckds,(ckde-1) dfi_scalar(pig,k,pjg,itrace) = xv(k) ENDDO ENDDO IF ( SIZE(grid%toposlpx) .GT. 1 ) THEN CALL rsl_lite_from_parent_msg(4,xv) grid%toposlpx(pig,pjg) = xv(1) ENDIF IF ( SIZE(grid%toposlpy) .GT. 1 ) THEN CALL rsl_lite_from_parent_msg(4,xv) grid%toposlpy(pig,pjg) = xv(1) ENDIF IF ( SIZE(grid%slope) .GT. 1 ) THEN CALL rsl_lite_from_parent_msg(4,xv) grid%slope(pig,pjg) = xv(1) ENDIF IF ( SIZE(grid%slp_azi) .GT. 1 ) THEN CALL rsl_lite_from_parent_msg(4,xv) grid%slp_azi(pig,pjg) = xv(1) ENDIF IF ( SIZE(grid%shdmax) .GT. 1 ) THEN CALL rsl_lite_from_parent_msg(4,xv) grid%shdmax(pig,pjg) = xv(1) ENDIF IF ( SIZE(grid%shdmin) .GT. 1 ) THEN CALL rsl_lite_from_parent_msg(4,xv) grid%shdmin(pig,pjg) = xv(1) ENDIF IF ( SIZE(grid%tslb) .GT. 1 ) THEN CALL rsl_lite_from_parent_msg(((config_flags%num_soil_layers)-(1)+1)*4,xv) DO k = 1,config_flags%num_soil_layers grid%tslb(pig,k,pjg) = xv(k) ENDDO ENDIF IF ( SIZE(grid%smois) .GT. 1 ) THEN CALL rsl_lite_from_parent_msg(((config_flags%num_soil_layers)-(1)+1)*4,xv) DO k = 1,config_flags%num_soil_layers grid%smois(pig,k,pjg) = xv(k) ENDDO ENDIF IF ( SIZE(grid%sh2o) .GT. 1 ) THEN CALL rsl_lite_from_parent_msg(((config_flags%num_soil_layers)-(1)+1)*4,xv) DO k = 1,config_flags%num_soil_layers grid%sh2o(pig,k,pjg) = xv(k) ENDDO ENDIF IF ( SIZE(grid%smcrel) .GT. 1 ) THEN CALL rsl_lite_from_parent_msg(((config_flags%num_soil_layers)-(1)+1)*4,xv) DO k = 1,config_flags%num_soil_layers grid%smcrel(pig,k,pjg) = xv(k) ENDDO ENDIF IF ( SIZE(grid%xice) .GT. 1 ) THEN CALL rsl_lite_from_parent_msg(4,xv) grid%xice(pig,pjg) = xv(1) ENDIF IF ( SIZE(grid%xicem) .GT. 1 ) THEN CALL rsl_lite_from_parent_msg(4,xv) grid%xicem(pig,pjg) = xv(1) ENDIF IF ( SIZE(grid%smstav) .GT. 1 ) THEN CALL rsl_lite_from_parent_msg(4,xv) grid%smstav(pig,pjg) = xv(1) ENDIF IF ( SIZE(grid%sfcrunoff) .GT. 1 ) THEN CALL rsl_lite_from_parent_msg(4,xv) grid%sfcrunoff(pig,pjg) = xv(1) ENDIF IF ( SIZE(grid%udrunoff) .GT. 1 ) THEN CALL rsl_lite_from_parent_msg(4,xv) grid%udrunoff(pig,pjg) = xv(1) ENDIF IF ( SIZE(grid%ivgtyp) .GT. 1 ) THEN CALL rsl_lite_from_parent_msg(4,xv) grid%ivgtyp(pig,pjg) = xv(1) ENDIF IF ( SIZE(grid%isltyp) .GT. 1 ) THEN CALL rsl_lite_from_parent_msg(4,xv) grid%isltyp(pig,pjg) = xv(1) ENDIF IF ( SIZE(grid%vegfra) .GT. 1 ) THEN CALL rsl_lite_from_parent_msg(4,xv) grid%vegfra(pig,pjg) = xv(1) ENDIF IF ( SIZE(grid%acgrdflx) .GT. 1 ) THEN CALL rsl_lite_from_parent_msg(4,xv) grid%acgrdflx(pig,pjg) = xv(1) ENDIF IF ( SIZE(grid%acsnow) .GT. 1 ) THEN CALL rsl_lite_from_parent_msg(4,xv) grid%acsnow(pig,pjg) = xv(1) ENDIF IF ( SIZE(grid%acsnom) .GT. 1 ) THEN CALL rsl_lite_from_parent_msg(4,xv) grid%acsnom(pig,pjg) = xv(1) ENDIF IF ( SIZE(grid%snow) .GT. 1 ) THEN CALL rsl_lite_from_parent_msg(4,xv) grid%snow(pig,pjg) = xv(1) ENDIF IF ( SIZE(grid%snowh) .GT. 1 ) THEN CALL rsl_lite_from_parent_msg(4,xv) grid%snowh(pig,pjg) = xv(1) ENDIF IF ( SIZE(grid%canwat) .GT. 1 ) THEN CALL rsl_lite_from_parent_msg(4,xv) grid%canwat(pig,pjg) = xv(1) ENDIF IF ( SIZE(grid%sstsk) .GT. 1 ) THEN CALL rsl_lite_from_parent_msg(4,xv) grid%sstsk(pig,pjg) = xv(1) ENDIF IF ( SIZE(grid%tr_urb2d) .GT. 1 ) THEN CALL rsl_lite_from_parent_msg(4,xv) grid%tr_urb2d(pig,pjg) = xv(1) ENDIF IF ( SIZE(grid%tb_urb2d) .GT. 1 ) THEN CALL rsl_lite_from_parent_msg(4,xv) grid%tb_urb2d(pig,pjg) = xv(1) ENDIF IF ( SIZE(grid%tg_urb2d) .GT. 1 ) THEN CALL rsl_lite_from_parent_msg(4,xv) grid%tg_urb2d(pig,pjg) = xv(1) ENDIF IF ( SIZE(grid%tc_urb2d) .GT. 1 ) THEN CALL rsl_lite_from_parent_msg(4,xv) grid%tc_urb2d(pig,pjg) = xv(1) ENDIF IF ( SIZE(grid%qc_urb2d) .GT. 1 ) THEN CALL rsl_lite_from_parent_msg(4,xv) grid%qc_urb2d(pig,pjg) = xv(1) ENDIF IF ( SIZE(grid%uc_urb2d) .GT. 1 ) THEN CALL rsl_lite_from_parent_msg(4,xv) grid%uc_urb2d(pig,pjg) = xv(1) ENDIF IF ( SIZE(grid%xxxr_urb2d) .GT. 1 ) THEN CALL rsl_lite_from_parent_msg(4,xv) grid%xxxr_urb2d(pig,pjg) = xv(1) ENDIF IF ( SIZE(grid%xxxb_urb2d) .GT. 1 ) THEN CALL rsl_lite_from_parent_msg(4,xv) grid%xxxb_urb2d(pig,pjg) = xv(1) ENDIF IF ( SIZE(grid%xxxg_urb2d) .GT. 1 ) THEN CALL rsl_lite_from_parent_msg(4,xv) grid%xxxg_urb2d(pig,pjg) = xv(1) ENDIF IF ( SIZE(grid%xxxc_urb2d) .GT. 1 ) THEN CALL rsl_lite_from_parent_msg(4,xv) grid%xxxc_urb2d(pig,pjg) = xv(1) ENDIF IF ( SIZE(grid%trl_urb3d) .GT. 1 ) THEN CALL rsl_lite_from_parent_msg(((config_flags%num_soil_layers)-(1)+1)*4,xv) DO k = 1,config_flags%num_soil_layers grid%trl_urb3d(pig,k,pjg) = xv(k) ENDDO ENDIF IF ( SIZE(grid%tbl_urb3d) .GT. 1 ) THEN CALL rsl_lite_from_parent_msg(((config_flags%num_soil_layers)-(1)+1)*4,xv) DO k = 1,config_flags%num_soil_layers grid%tbl_urb3d(pig,k,pjg) = xv(k) ENDDO ENDIF IF ( SIZE(grid%tgl_urb3d) .GT. 1 ) THEN CALL rsl_lite_from_parent_msg(((config_flags%num_soil_layers)-(1)+1)*4,xv) DO k = 1,config_flags%num_soil_layers grid%tgl_urb3d(pig,k,pjg) = xv(k) ENDDO ENDIF IF ( SIZE(grid%frc_urb2d) .GT. 1 ) THEN CALL rsl_lite_from_parent_msg(4,xv) grid%frc_urb2d(pig,pjg) = xv(1) ENDIF IF ( SIZE(grid%utype_urb2d) .GT. 1 ) THEN CALL rsl_lite_from_parent_msg(4,xv) grid%utype_urb2d(pig,pjg) = xv(1) ENDIF IF ( SIZE(grid%var2d) .GT. 1 ) THEN CALL rsl_lite_from_parent_msg(4,xv) grid%var2d(pig,pjg) = xv(1) ENDIF IF ( SIZE(grid%oc12d) .GT. 1 ) THEN CALL rsl_lite_from_parent_msg(4,xv) grid%oc12d(pig,pjg) = xv(1) ENDIF IF ( SIZE(grid%oa1) .GT. 1 ) THEN CALL rsl_lite_from_parent_msg(4,xv) grid%oa1(pig,pjg) = xv(1) ENDIF IF ( SIZE(grid%oa2) .GT. 1 ) THEN CALL rsl_lite_from_parent_msg(4,xv) grid%oa2(pig,pjg) = xv(1) ENDIF IF ( SIZE(grid%oa3) .GT. 1 ) THEN CALL rsl_lite_from_parent_msg(4,xv) grid%oa3(pig,pjg) = xv(1) ENDIF IF ( SIZE(grid%oa4) .GT. 1 ) THEN CALL rsl_lite_from_parent_msg(4,xv) grid%oa4(pig,pjg) = xv(1) ENDIF IF ( SIZE(grid%ol1) .GT. 1 ) THEN CALL rsl_lite_from_parent_msg(4,xv) grid%ol1(pig,pjg) = xv(1) ENDIF IF ( SIZE(grid%ol2) .GT. 1 ) THEN CALL rsl_lite_from_parent_msg(4,xv) grid%ol2(pig,pjg) = xv(1) ENDIF IF ( SIZE(grid%ol3) .GT. 1 ) THEN CALL rsl_lite_from_parent_msg(4,xv) grid%ol3(pig,pjg) = xv(1) ENDIF IF ( SIZE(grid%ol4) .GT. 1 ) THEN CALL rsl_lite_from_parent_msg(4,xv) grid%ol4(pig,pjg) = xv(1) ENDIF IF ( SIZE(grid%f_ice_phy) .GT. 1 ) THEN CALL rsl_lite_from_parent_msg((((ckde-1))-(ckds)+1)*4,xv) DO k = ckds,(ckde-1) grid%f_ice_phy(pig,k,pjg) = xv(k) ENDDO ENDIF IF ( SIZE(grid%f_rain_phy) .GT. 1 ) THEN CALL rsl_lite_from_parent_msg((((ckde-1))-(ckds)+1)*4,xv) DO k = ckds,(ckde-1) grid%f_rain_phy(pig,k,pjg) = xv(k) ENDDO ENDIF IF ( SIZE(grid%f_rimef_phy) .GT. 1 ) THEN CALL rsl_lite_from_parent_msg((((ckde-1))-(ckds)+1)*4,xv) DO k = ckds,(ckde-1) grid%f_rimef_phy(pig,k,pjg) = xv(k) ENDDO ENDIF IF ( SIZE(grid%h_diabatic) .GT. 1 ) THEN CALL rsl_lite_from_parent_msg((((ckde-1))-(ckds)+1)*4,xv) DO k = ckds,(ckde-1) grid%h_diabatic(pig,k,pjg) = xv(k) ENDDO ENDIF IF ( SIZE(grid%msft) .GT. 1 ) THEN CALL rsl_lite_from_parent_msg(4,xv) grid%msft(pig,pjg) = xv(1) ENDIF IF ( SIZE(grid%msfu) .GT. 1 ) THEN CALL rsl_lite_from_parent_msg(4,xv) grid%msfu(pig,pjg) = xv(1) ENDIF IF ( SIZE(grid%msfv) .GT. 1 ) THEN CALL rsl_lite_from_parent_msg(4,xv) grid%msfv(pig,pjg) = xv(1) ENDIF IF ( SIZE(grid%msftx) .GT. 1 ) THEN CALL rsl_lite_from_parent_msg(4,xv) grid%msftx(pig,pjg) = xv(1) ENDIF IF ( SIZE(grid%msfty) .GT. 1 ) THEN CALL rsl_lite_from_parent_msg(4,xv) grid%msfty(pig,pjg) = xv(1) ENDIF IF ( SIZE(grid%msfux) .GT. 1 ) THEN CALL rsl_lite_from_parent_msg(4,xv) grid%msfux(pig,pjg) = xv(1) ENDIF IF ( SIZE(grid%msfuy) .GT. 1 ) THEN CALL rsl_lite_from_parent_msg(4,xv) grid%msfuy(pig,pjg) = xv(1) ENDIF IF ( SIZE(grid%msfvx) .GT. 1 ) THEN CALL rsl_lite_from_parent_msg(4,xv) grid%msfvx(pig,pjg) = xv(1) ENDIF IF ( SIZE(grid%msfvx_inv) .GT. 1 ) THEN CALL rsl_lite_from_parent_msg(4,xv) grid%msfvx_inv(pig,pjg) = xv(1) ENDIF IF ( SIZE(grid%msfvy) .GT. 1 ) THEN CALL rsl_lite_from_parent_msg(4,xv) grid%msfvy(pig,pjg) = xv(1) ENDIF IF ( SIZE(grid%f) .GT. 1 ) THEN CALL rsl_lite_from_parent_msg(4,xv) grid%f(pig,pjg) = xv(1) ENDIF IF ( SIZE(grid%e) .GT. 1 ) THEN CALL rsl_lite_from_parent_msg(4,xv) grid%e(pig,pjg) = xv(1) ENDIF IF ( SIZE(grid%sina) .GT. 1 ) THEN CALL rsl_lite_from_parent_msg(4,xv) grid%sina(pig,pjg) = xv(1) ENDIF IF ( SIZE(grid%cosa) .GT. 1 ) THEN CALL rsl_lite_from_parent_msg(4,xv) grid%cosa(pig,pjg) = xv(1) ENDIF IF ( SIZE(grid%ht) .GT. 1 ) THEN CALL rsl_lite_from_parent_msg(4,xv) grid%ht(pig,pjg) = xv(1) ENDIF IF ( SIZE(grid%ht_shad) .GT. 1 ) THEN CALL rsl_lite_from_parent_msg(4,xv) grid%ht_shad(pig,pjg) = xv(1) ENDIF IF ( SIZE(grid%tsk) .GT. 1 ) THEN CALL rsl_lite_from_parent_msg(4,xv) grid%tsk(pig,pjg) = xv(1) ENDIF IF ( SIZE(grid%rainc) .GT. 1 ) THEN CALL rsl_lite_from_parent_msg(4,xv) grid%rainc(pig,pjg) = xv(1) ENDIF IF ( SIZE(grid%rainsh) .GT. 1 ) THEN CALL rsl_lite_from_parent_msg(4,xv) grid%rainsh(pig,pjg) = xv(1) ENDIF IF ( SIZE(grid%rainnc) .GT. 1 ) THEN CALL rsl_lite_from_parent_msg(4,xv) grid%rainnc(pig,pjg) = xv(1) ENDIF IF ( SIZE(grid%i_rainc) .GT. 1 ) THEN CALL rsl_lite_from_parent_msg(4,xv) grid%i_rainc(pig,pjg) = xv(1) ENDIF IF ( SIZE(grid%i_rainnc) .GT. 1 ) THEN CALL rsl_lite_from_parent_msg(4,xv) grid%i_rainnc(pig,pjg) = xv(1) ENDIF IF ( SIZE(grid%snownc) .GT. 1 ) THEN CALL rsl_lite_from_parent_msg(4,xv) grid%snownc(pig,pjg) = xv(1) ENDIF IF ( SIZE(grid%graupelnc) .GT. 1 ) THEN CALL rsl_lite_from_parent_msg(4,xv) grid%graupelnc(pig,pjg) = xv(1) ENDIF IF ( SIZE(grid%hailnc) .GT. 1 ) THEN CALL rsl_lite_from_parent_msg(4,xv) grid%hailnc(pig,pjg) = xv(1) ENDIF IF ( SIZE(grid%refl_10cm) .GT. 1 ) THEN CALL rsl_lite_from_parent_msg((((ckde-1))-(ckds)+1)*4,xv) DO k = ckds,(ckde-1) grid%refl_10cm(pig,k,pjg) = xv(k) ENDDO ENDIF IF ( SIZE(grid%rthraten) .GT. 1 ) THEN CALL rsl_lite_from_parent_msg((((ckde-1))-(ckds)+1)*4,xv) DO k = ckds,(ckde-1) grid%rthraten(pig,k,pjg) = xv(k) ENDDO ENDIF IF ( SIZE(grid%swdown) .GT. 1 ) THEN CALL rsl_lite_from_parent_msg(4,xv) grid%swdown(pig,pjg) = xv(1) ENDIF IF ( SIZE(grid%gsw) .GT. 1 ) THEN CALL rsl_lite_from_parent_msg(4,xv) grid%gsw(pig,pjg) = xv(1) ENDIF IF ( SIZE(grid%glw) .GT. 1 ) THEN CALL rsl_lite_from_parent_msg(4,xv) grid%glw(pig,pjg) = xv(1) ENDIF IF ( SIZE(grid%swnorm) .GT. 1 ) THEN CALL rsl_lite_from_parent_msg(4,xv) grid%swnorm(pig,pjg) = xv(1) ENDIF IF ( SIZE(grid%acswupt) .GT. 1 ) THEN CALL rsl_lite_from_parent_msg(4,xv) grid%acswupt(pig,pjg) = xv(1) ENDIF IF ( SIZE(grid%acswuptc) .GT. 1 ) THEN CALL rsl_lite_from_parent_msg(4,xv) grid%acswuptc(pig,pjg) = xv(1) ENDIF IF ( SIZE(grid%acswdnt) .GT. 1 ) THEN CALL rsl_lite_from_parent_msg(4,xv) grid%acswdnt(pig,pjg) = xv(1) ENDIF IF ( SIZE(grid%acswdntc) .GT. 1 ) THEN CALL rsl_lite_from_parent_msg(4,xv) grid%acswdntc(pig,pjg) = xv(1) ENDIF IF ( SIZE(grid%acswupb) .GT. 1 ) THEN CALL rsl_lite_from_parent_msg(4,xv) grid%acswupb(pig,pjg) = xv(1) ENDIF IF ( SIZE(grid%acswupbc) .GT. 1 ) THEN CALL rsl_lite_from_parent_msg(4,xv) grid%acswupbc(pig,pjg) = xv(1) ENDIF IF ( SIZE(grid%acswdnb) .GT. 1 ) THEN CALL rsl_lite_from_parent_msg(4,xv) grid%acswdnb(pig,pjg) = xv(1) ENDIF IF ( SIZE(grid%acswdnbc) .GT. 1 ) THEN CALL rsl_lite_from_parent_msg(4,xv) grid%acswdnbc(pig,pjg) = xv(1) ENDIF IF ( SIZE(grid%aclwupt) .GT. 1 ) THEN CALL rsl_lite_from_parent_msg(4,xv) grid%aclwupt(pig,pjg) = xv(1) ENDIF IF ( SIZE(grid%aclwuptc) .GT. 1 ) THEN CALL rsl_lite_from_parent_msg(4,xv) grid%aclwuptc(pig,pjg) = xv(1) ENDIF IF ( SIZE(grid%aclwdnt) .GT. 1 ) THEN CALL rsl_lite_from_parent_msg(4,xv) grid%aclwdnt(pig,pjg) = xv(1) ENDIF IF ( SIZE(grid%aclwdntc) .GT. 1 ) THEN CALL rsl_lite_from_parent_msg(4,xv) grid%aclwdntc(pig,pjg) = xv(1) ENDIF IF ( SIZE(grid%aclwupb) .GT. 1 ) THEN CALL rsl_lite_from_parent_msg(4,xv) grid%aclwupb(pig,pjg) = xv(1) ENDIF IF ( SIZE(grid%aclwupbc) .GT. 1 ) THEN CALL rsl_lite_from_parent_msg(4,xv) grid%aclwupbc(pig,pjg) = xv(1) ENDIF IF ( SIZE(grid%aclwdnb) .GT. 1 ) THEN CALL rsl_lite_from_parent_msg(4,xv) grid%aclwdnb(pig,pjg) = xv(1) ENDIF IF ( SIZE(grid%aclwdnbc) .GT. 1 ) THEN CALL rsl_lite_from_parent_msg(4,xv) grid%aclwdnbc(pig,pjg) = xv(1) ENDIF IF ( SIZE(grid%i_acswupt) .GT. 1 ) THEN CALL rsl_lite_from_parent_msg(4,xv) grid%i_acswupt(pig,pjg) = xv(1) ENDIF IF ( SIZE(grid%i_acswuptc) .GT. 1 ) THEN CALL rsl_lite_from_parent_msg(4,xv) grid%i_acswuptc(pig,pjg) = xv(1) ENDIF IF ( SIZE(grid%i_acswdnt) .GT. 1 ) THEN CALL rsl_lite_from_parent_msg(4,xv) grid%i_acswdnt(pig,pjg) = xv(1) ENDIF IF ( SIZE(grid%i_acswdntc) .GT. 1 ) THEN CALL rsl_lite_from_parent_msg(4,xv) grid%i_acswdntc(pig,pjg) = xv(1) ENDIF IF ( SIZE(grid%i_acswupb) .GT. 1 ) THEN CALL rsl_lite_from_parent_msg(4,xv) grid%i_acswupb(pig,pjg) = xv(1) ENDIF IF ( SIZE(grid%i_acswupbc) .GT. 1 ) THEN CALL rsl_lite_from_parent_msg(4,xv) grid%i_acswupbc(pig,pjg) = xv(1) ENDIF IF ( SIZE(grid%i_acswdnb) .GT. 1 ) THEN CALL rsl_lite_from_parent_msg(4,xv) grid%i_acswdnb(pig,pjg) = xv(1) ENDIF IF ( SIZE(grid%i_acswdnbc) .GT. 1 ) THEN CALL rsl_lite_from_parent_msg(4,xv) grid%i_acswdnbc(pig,pjg) = xv(1) ENDIF IF ( SIZE(grid%i_aclwupt) .GT. 1 ) THEN CALL rsl_lite_from_parent_msg(4,xv) grid%i_aclwupt(pig,pjg) = xv(1) ENDIF IF ( SIZE(grid%i_aclwuptc) .GT. 1 ) THEN CALL rsl_lite_from_parent_msg(4,xv) grid%i_aclwuptc(pig,pjg) = xv(1) ENDIF IF ( SIZE(grid%i_aclwdnt) .GT. 1 ) THEN CALL rsl_lite_from_parent_msg(4,xv) grid%i_aclwdnt(pig,pjg) = xv(1) ENDIF IF ( SIZE(grid%i_aclwdntc) .GT. 1 ) THEN CALL rsl_lite_from_parent_msg(4,xv) grid%i_aclwdntc(pig,pjg) = xv(1) ENDIF IF ( SIZE(grid%i_aclwupb) .GT. 1 ) THEN CALL rsl_lite_from_parent_msg(4,xv) grid%i_aclwupb(pig,pjg) = xv(1) ENDIF IF ( SIZE(grid%i_aclwupbc) .GT. 1 ) THEN CALL rsl_lite_from_parent_msg(4,xv) grid%i_aclwupbc(pig,pjg) = xv(1) ENDIF IF ( SIZE(grid%i_aclwdnb) .GT. 1 ) THEN CALL rsl_lite_from_parent_msg(4,xv) grid%i_aclwdnb(pig,pjg) = xv(1) ENDIF IF ( SIZE(grid%i_aclwdnbc) .GT. 1 ) THEN CALL rsl_lite_from_parent_msg(4,xv) grid%i_aclwdnbc(pig,pjg) = xv(1) ENDIF IF ( SIZE(grid%swupt) .GT. 1 ) THEN CALL rsl_lite_from_parent_msg(4,xv) grid%swupt(pig,pjg) = xv(1) ENDIF IF ( SIZE(grid%swuptc) .GT. 1 ) THEN CALL rsl_lite_from_parent_msg(4,xv) grid%swuptc(pig,pjg) = xv(1) ENDIF IF ( SIZE(grid%swdnt) .GT. 1 ) THEN CALL rsl_lite_from_parent_msg(4,xv) grid%swdnt(pig,pjg) = xv(1) ENDIF IF ( SIZE(grid%swdntc) .GT. 1 ) THEN CALL rsl_lite_from_parent_msg(4,xv) grid%swdntc(pig,pjg) = xv(1) ENDIF IF ( SIZE(grid%swupb) .GT. 1 ) THEN CALL rsl_lite_from_parent_msg(4,xv) grid%swupb(pig,pjg) = xv(1) ENDIF IF ( SIZE(grid%swupbc) .GT. 1 ) THEN CALL rsl_lite_from_parent_msg(4,xv) grid%swupbc(pig,pjg) = xv(1) ENDIF IF ( SIZE(grid%swdnb) .GT. 1 ) THEN CALL rsl_lite_from_parent_msg(4,xv) grid%swdnb(pig,pjg) = xv(1) ENDIF IF ( SIZE(grid%swdnbc) .GT. 1 ) THEN CALL rsl_lite_from_parent_msg(4,xv) grid%swdnbc(pig,pjg) = xv(1) ENDIF IF ( SIZE(grid%lwupt) .GT. 1 ) THEN CALL rsl_lite_from_parent_msg(4,xv) grid%lwupt(pig,pjg) = xv(1) ENDIF IF ( SIZE(grid%lwuptc) .GT. 1 ) THEN CALL rsl_lite_from_parent_msg(4,xv) grid%lwuptc(pig,pjg) = xv(1) ENDIF IF ( SIZE(grid%lwdnt) .GT. 1 ) THEN CALL rsl_lite_from_parent_msg(4,xv) grid%lwdnt(pig,pjg) = xv(1) ENDIF IF ( SIZE(grid%lwdntc) .GT. 1 ) THEN CALL rsl_lite_from_parent_msg(4,xv) grid%lwdntc(pig,pjg) = xv(1) ENDIF IF ( SIZE(grid%lwupb) .GT. 1 ) THEN CALL rsl_lite_from_parent_msg(4,xv) grid%lwupb(pig,pjg) = xv(1) ENDIF IF ( SIZE(grid%lwupbc) .GT. 1 ) THEN CALL rsl_lite_from_parent_msg(4,xv) grid%lwupbc(pig,pjg) = xv(1) ENDIF IF ( SIZE(grid%lwdnb) .GT. 1 ) THEN CALL rsl_lite_from_parent_msg(4,xv) grid%lwdnb(pig,pjg) = xv(1) ENDIF IF ( SIZE(grid%lwdnbc) .GT. 1 ) THEN CALL rsl_lite_from_parent_msg(4,xv) grid%lwdnbc(pig,pjg) = xv(1) ENDIF IF ( SIZE(grid%xlat) .GT. 1 ) THEN CALL rsl_lite_from_parent_msg(4,xv) grid%xlat(pig,pjg) = xv(1) ENDIF IF ( SIZE(grid%xlong) .GT. 1 ) THEN CALL rsl_lite_from_parent_msg(4,xv) grid%xlong(pig,pjg) = xv(1) ENDIF IF ( SIZE(grid%xlat_u) .GT. 1 ) THEN CALL rsl_lite_from_parent_msg(4,xv) grid%xlat_u(pig,pjg) = xv(1) ENDIF IF ( SIZE(grid%xlong_u) .GT. 1 ) THEN CALL rsl_lite_from_parent_msg(4,xv) grid%xlong_u(pig,pjg) = xv(1) ENDIF IF ( SIZE(grid%xlat_v) .GT. 1 ) THEN CALL rsl_lite_from_parent_msg(4,xv) grid%xlat_v(pig,pjg) = xv(1) ENDIF IF ( SIZE(grid%xlong_v) .GT. 1 ) THEN CALL rsl_lite_from_parent_msg(4,xv) grid%xlong_v(pig,pjg) = xv(1) ENDIF IF ( SIZE(grid%clat) .GT. 1 ) THEN CALL rsl_lite_from_parent_msg(4,xv) grid%clat(pig,pjg) = xv(1) ENDIF IF ( SIZE(grid%isnowxy) .GT. 1 ) THEN CALL rsl_lite_from_parent_msg(4,xv) grid%isnowxy(pig,pjg) = xv(1) ENDIF IF ( SIZE(grid%tvxy) .GT. 1 ) THEN CALL rsl_lite_from_parent_msg(4,xv) grid%tvxy(pig,pjg) = xv(1) ENDIF IF ( SIZE(grid%tgxy) .GT. 1 ) THEN CALL rsl_lite_from_parent_msg(4,xv) grid%tgxy(pig,pjg) = xv(1) ENDIF IF ( SIZE(grid%canliqxy) .GT. 1 ) THEN CALL rsl_lite_from_parent_msg(4,xv) grid%canliqxy(pig,pjg) = xv(1) ENDIF IF ( SIZE(grid%canicexy) .GT. 1 ) THEN CALL rsl_lite_from_parent_msg(4,xv) grid%canicexy(pig,pjg) = xv(1) ENDIF IF ( SIZE(grid%eahxy) .GT. 1 ) THEN CALL rsl_lite_from_parent_msg(4,xv) grid%eahxy(pig,pjg) = xv(1) ENDIF IF ( SIZE(grid%tahxy) .GT. 1 ) THEN CALL rsl_lite_from_parent_msg(4,xv) grid%tahxy(pig,pjg) = xv(1) ENDIF IF ( SIZE(grid%cmxy) .GT. 1 ) THEN CALL rsl_lite_from_parent_msg(4,xv) grid%cmxy(pig,pjg) = xv(1) ENDIF IF ( SIZE(grid%chxy) .GT. 1 ) THEN CALL rsl_lite_from_parent_msg(4,xv) grid%chxy(pig,pjg) = xv(1) ENDIF IF ( SIZE(grid%fwetxy) .GT. 1 ) THEN CALL rsl_lite_from_parent_msg(4,xv) grid%fwetxy(pig,pjg) = xv(1) ENDIF IF ( SIZE(grid%sneqvoxy) .GT. 1 ) THEN CALL rsl_lite_from_parent_msg(4,xv) grid%sneqvoxy(pig,pjg) = xv(1) ENDIF IF ( SIZE(grid%alboldxy) .GT. 1 ) THEN CALL rsl_lite_from_parent_msg(4,xv) grid%alboldxy(pig,pjg) = xv(1) ENDIF IF ( SIZE(grid%qsnowxy) .GT. 1 ) THEN CALL rsl_lite_from_parent_msg(4,xv) grid%qsnowxy(pig,pjg) = xv(1) ENDIF IF ( SIZE(grid%wslakexy) .GT. 1 ) THEN CALL rsl_lite_from_parent_msg(4,xv) grid%wslakexy(pig,pjg) = xv(1) ENDIF IF ( SIZE(grid%zwtxy) .GT. 1 ) THEN CALL rsl_lite_from_parent_msg(4,xv) grid%zwtxy(pig,pjg) = xv(1) ENDIF IF ( SIZE(grid%waxy) .GT. 1 ) THEN CALL rsl_lite_from_parent_msg(4,xv) grid%waxy(pig,pjg) = xv(1) ENDIF IF ( SIZE(grid%wtxy) .GT. 1 ) THEN CALL rsl_lite_from_parent_msg(4,xv) grid%wtxy(pig,pjg) = xv(1) ENDIF IF ( SIZE(grid%zsnsoxy) .GT. 1 ) THEN CALL rsl_lite_from_parent_msg(((config_flags%num_snso_layers)-(1)+1)*4,xv) DO k = 1,config_flags%num_snso_layers grid%zsnsoxy(pig,k,pjg) = xv(k) ENDDO ENDIF IF ( SIZE(grid%tsnoxy) .GT. 1 ) THEN CALL rsl_lite_from_parent_msg(((config_flags%num_snow_layers)-(1)+1)*4,xv) DO k = 1,config_flags%num_snow_layers grid%tsnoxy(pig,k,pjg) = xv(k) ENDDO ENDIF IF ( SIZE(grid%snicexy) .GT. 1 ) THEN CALL rsl_lite_from_parent_msg(((config_flags%num_snow_layers)-(1)+1)*4,xv) DO k = 1,config_flags%num_snow_layers grid%snicexy(pig,k,pjg) = xv(k) ENDDO ENDIF IF ( SIZE(grid%snliqxy) .GT. 1 ) THEN CALL rsl_lite_from_parent_msg(((config_flags%num_snow_layers)-(1)+1)*4,xv) DO k = 1,config_flags%num_snow_layers grid%snliqxy(pig,k,pjg) = xv(k) ENDDO ENDIF IF ( SIZE(grid%lfmassxy) .GT. 1 ) THEN CALL rsl_lite_from_parent_msg(4,xv) grid%lfmassxy(pig,pjg) = xv(1) ENDIF IF ( SIZE(grid%rtmassxy) .GT. 1 ) THEN CALL rsl_lite_from_parent_msg(4,xv) grid%rtmassxy(pig,pjg) = xv(1) ENDIF IF ( SIZE(grid%stmassxy) .GT. 1 ) THEN CALL rsl_lite_from_parent_msg(4,xv) grid%stmassxy(pig,pjg) = xv(1) ENDIF IF ( SIZE(grid%woodxy) .GT. 1 ) THEN CALL rsl_lite_from_parent_msg(4,xv) grid%woodxy(pig,pjg) = xv(1) ENDIF IF ( SIZE(grid%stblcpxy) .GT. 1 ) THEN CALL rsl_lite_from_parent_msg(4,xv) grid%stblcpxy(pig,pjg) = xv(1) ENDIF IF ( SIZE(grid%fastcpxy) .GT. 1 ) THEN CALL rsl_lite_from_parent_msg(4,xv) grid%fastcpxy(pig,pjg) = xv(1) ENDIF IF ( SIZE(grid%xsaixy) .GT. 1 ) THEN CALL rsl_lite_from_parent_msg(4,xv) grid%xsaixy(pig,pjg) = xv(1) ENDIF IF ( SIZE(grid%tradxy) .GT. 1 ) THEN CALL rsl_lite_from_parent_msg(4,xv) grid%tradxy(pig,pjg) = xv(1) ENDIF IF ( SIZE(grid%tsxy) .GT. 1 ) THEN CALL rsl_lite_from_parent_msg(4,xv) grid%tsxy(pig,pjg) = xv(1) ENDIF IF ( SIZE(grid%neexy) .GT. 1 ) THEN CALL rsl_lite_from_parent_msg(4,xv) grid%neexy(pig,pjg) = xv(1) ENDIF IF ( SIZE(grid%gppxy) .GT. 1 ) THEN CALL rsl_lite_from_parent_msg(4,xv) grid%gppxy(pig,pjg) = xv(1) ENDIF IF ( SIZE(grid%nppxy) .GT. 1 ) THEN CALL rsl_lite_from_parent_msg(4,xv) grid%nppxy(pig,pjg) = xv(1) ENDIF IF ( SIZE(grid%fvegxy) .GT. 1 ) THEN CALL rsl_lite_from_parent_msg(4,xv) grid%fvegxy(pig,pjg) = xv(1) ENDIF IF ( SIZE(grid%qinxy) .GT. 1 ) THEN CALL rsl_lite_from_parent_msg(4,xv) grid%qinxy(pig,pjg) = xv(1) ENDIF IF ( SIZE(grid%runsfxy) .GT. 1 ) THEN CALL rsl_lite_from_parent_msg(4,xv) grid%runsfxy(pig,pjg) = xv(1) ENDIF IF ( SIZE(grid%runsbxy) .GT. 1 ) THEN CALL rsl_lite_from_parent_msg(4,xv) grid%runsbxy(pig,pjg) = xv(1) ENDIF IF ( SIZE(grid%ecanxy) .GT. 1 ) THEN CALL rsl_lite_from_parent_msg(4,xv) grid%ecanxy(pig,pjg) = xv(1) ENDIF IF ( SIZE(grid%edirxy) .GT. 1 ) THEN CALL rsl_lite_from_parent_msg(4,xv) grid%edirxy(pig,pjg) = xv(1) ENDIF IF ( SIZE(grid%etranxy) .GT. 1 ) THEN CALL rsl_lite_from_parent_msg(4,xv) grid%etranxy(pig,pjg) = xv(1) ENDIF IF ( SIZE(grid%fsaxy) .GT. 1 ) THEN CALL rsl_lite_from_parent_msg(4,xv) grid%fsaxy(pig,pjg) = xv(1) ENDIF IF ( SIZE(grid%firaxy) .GT. 1 ) THEN CALL rsl_lite_from_parent_msg(4,xv) grid%firaxy(pig,pjg) = xv(1) ENDIF IF ( SIZE(grid%aparxy) .GT. 1 ) THEN CALL rsl_lite_from_parent_msg(4,xv) grid%aparxy(pig,pjg) = xv(1) ENDIF IF ( SIZE(grid%psnxy) .GT. 1 ) THEN CALL rsl_lite_from_parent_msg(4,xv) grid%psnxy(pig,pjg) = xv(1) ENDIF IF ( SIZE(grid%savxy) .GT. 1 ) THEN CALL rsl_lite_from_parent_msg(4,xv) grid%savxy(pig,pjg) = xv(1) ENDIF IF ( SIZE(grid%sagxy) .GT. 1 ) THEN CALL rsl_lite_from_parent_msg(4,xv) grid%sagxy(pig,pjg) = xv(1) ENDIF IF ( SIZE(grid%fsnoxy) .GT. 1 ) THEN CALL rsl_lite_from_parent_msg(4,xv) grid%fsnoxy(pig,pjg) = xv(1) ENDIF IF ( SIZE(grid%t2mvxy) .GT. 1 ) THEN CALL rsl_lite_from_parent_msg(4,xv) grid%t2mvxy(pig,pjg) = xv(1) ENDIF IF ( SIZE(grid%t2mbxy) .GT. 1 ) THEN CALL rsl_lite_from_parent_msg(4,xv) grid%t2mbxy(pig,pjg) = xv(1) ENDIF IF ( SIZE(grid%q2mvxy) .GT. 1 ) THEN CALL rsl_lite_from_parent_msg(4,xv) grid%q2mvxy(pig,pjg) = xv(1) ENDIF IF ( SIZE(grid%q2mbxy) .GT. 1 ) THEN CALL rsl_lite_from_parent_msg(4,xv) grid%q2mbxy(pig,pjg) = xv(1) ENDIF IF ( SIZE(grid%chstarxy) .GT. 1 ) THEN CALL rsl_lite_from_parent_msg(4,xv) grid%chstarxy(pig,pjg) = xv(1) ENDIF IF ( SIZE(grid%rssunxy) .GT. 1 ) THEN CALL rsl_lite_from_parent_msg(4,xv) grid%rssunxy(pig,pjg) = xv(1) ENDIF IF ( SIZE(grid%rsshaxy) .GT. 1 ) THEN CALL rsl_lite_from_parent_msg(4,xv) grid%rsshaxy(pig,pjg) = xv(1) ENDIF IF ( SIZE(grid%bgapxy) .GT. 1 ) THEN CALL rsl_lite_from_parent_msg(4,xv) grid%bgapxy(pig,pjg) = xv(1) ENDIF IF ( SIZE(grid%wgapxy) .GT. 1 ) THEN CALL rsl_lite_from_parent_msg(4,xv) grid%wgapxy(pig,pjg) = xv(1) ENDIF IF ( SIZE(grid%gapxy) .GT. 1 ) THEN CALL rsl_lite_from_parent_msg(4,xv) grid%gapxy(pig,pjg) = xv(1) ENDIF IF ( SIZE(grid%tgvxy) .GT. 1 ) THEN CALL rsl_lite_from_parent_msg(4,xv) grid%tgvxy(pig,pjg) = xv(1) ENDIF IF ( SIZE(grid%tgbxy) .GT. 1 ) THEN CALL rsl_lite_from_parent_msg(4,xv) grid%tgbxy(pig,pjg) = xv(1) ENDIF IF ( SIZE(grid%chvxy) .GT. 1 ) THEN CALL rsl_lite_from_parent_msg(4,xv) grid%chvxy(pig,pjg) = xv(1) ENDIF IF ( SIZE(grid%chbxy) .GT. 1 ) THEN CALL rsl_lite_from_parent_msg(4,xv) grid%chbxy(pig,pjg) = xv(1) ENDIF IF ( SIZE(grid%tmn) .GT. 1 ) THEN CALL rsl_lite_from_parent_msg(4,xv) grid%tmn(pig,pjg) = xv(1) ENDIF IF ( SIZE(grid%tyr) .GT. 1 ) THEN CALL rsl_lite_from_parent_msg(4,xv) grid%tyr(pig,pjg) = xv(1) ENDIF IF ( SIZE(grid%tyra) .GT. 1 ) THEN CALL rsl_lite_from_parent_msg(4,xv) grid%tyra(pig,pjg) = xv(1) ENDIF IF ( SIZE(grid%tdly) .GT. 1 ) THEN CALL rsl_lite_from_parent_msg(4,xv) grid%tdly(pig,pjg) = xv(1) ENDIF IF ( SIZE(grid%tlag) .GT. 1 ) THEN CALL rsl_lite_from_parent_msg(((config_flags%lagday)-(1)+1)*4,xv) DO k = 1,config_flags%lagday grid%tlag(pig,k,pjg) = xv(k) ENDDO ENDIF IF ( SIZE(grid%xland) .GT. 1 ) THEN CALL rsl_lite_from_parent_msg(4,xv) grid%xland(pig,pjg) = xv(1) ENDIF IF ( SIZE(grid%achfx) .GT. 1 ) THEN CALL rsl_lite_from_parent_msg(4,xv) grid%achfx(pig,pjg) = xv(1) ENDIF IF ( SIZE(grid%aclhf) .GT. 1 ) THEN CALL rsl_lite_from_parent_msg(4,xv) grid%aclhf(pig,pjg) = xv(1) ENDIF IF ( SIZE(grid%snowc) .GT. 1 ) THEN CALL rsl_lite_from_parent_msg(4,xv) grid%snowc(pig,pjg) = xv(1) ENDIF IF ( SIZE(grid%tml) .GT. 1 ) THEN CALL rsl_lite_from_parent_msg(4,xv) grid%tml(pig,pjg) = xv(1) ENDIF IF ( SIZE(grid%t0ml) .GT. 1 ) THEN CALL rsl_lite_from_parent_msg(4,xv) grid%t0ml(pig,pjg) = xv(1) ENDIF IF ( SIZE(grid%hml) .GT. 1 ) THEN CALL rsl_lite_from_parent_msg(4,xv) grid%hml(pig,pjg) = xv(1) ENDIF IF ( SIZE(grid%h0ml) .GT. 1 ) THEN CALL rsl_lite_from_parent_msg(4,xv) grid%h0ml(pig,pjg) = xv(1) ENDIF IF ( SIZE(grid%huml) .GT. 1 ) THEN CALL rsl_lite_from_parent_msg(4,xv) grid%huml(pig,pjg) = xv(1) ENDIF IF ( SIZE(grid%hvml) .GT. 1 ) THEN CALL rsl_lite_from_parent_msg(4,xv) grid%hvml(pig,pjg) = xv(1) ENDIF IF ( SIZE(grid%tmoml) .GT. 1 ) THEN CALL rsl_lite_from_parent_msg(4,xv) grid%tmoml(pig,pjg) = xv(1) ENDIF IF ( SIZE(grid%vertstrucc) .GT. 1 ) THEN CALL rsl_lite_from_parent_msg((((ckde-1))-(ckds)+1)*4,xv) DO k = ckds,(ckde-1) grid%vertstrucc(pig,k,pjg) = xv(k) ENDDO ENDIF IF ( SIZE(grid%vertstrucs) .GT. 1 ) THEN CALL rsl_lite_from_parent_msg((((ckde-1))-(ckds)+1)*4,xv) DO k = ckds,(ckde-1) grid%vertstrucs(pig,k,pjg) = xv(k) ENDDO ENDIF IF ( SIZE(grid%ru_tendf_stoch) .GT. 1 ) THEN CALL rsl_lite_from_parent_msg((((ckde-1))-(ckds)+1)*4,xv) DO k = ckds,(ckde-1) grid%ru_tendf_stoch(pig,k,pjg) = xv(k) ENDDO ENDIF IF ( SIZE(grid%rv_tendf_stoch) .GT. 1 ) THEN CALL rsl_lite_from_parent_msg((((ckde-1))-(ckds)+1)*4,xv) DO k = ckds,(ckde-1) grid%rv_tendf_stoch(pig,k,pjg) = xv(k) ENDDO ENDIF IF ( SIZE(grid%rt_tendf_stoch) .GT. 1 ) THEN CALL rsl_lite_from_parent_msg((((ckde-1))-(ckds)+1)*4,xv) DO k = ckds,(ckde-1) grid%rt_tendf_stoch(pig,k,pjg) = xv(k) ENDDO ENDIF IF ( SIZE(grid%landmask) .GT. 1 ) THEN CALL rsl_lite_from_parent_msg(4,xv) grid%landmask(pig,pjg) = xv(1) ENDIF IF ( SIZE(grid%sst) .GT. 1 ) THEN CALL rsl_lite_from_parent_msg(4,xv) grid%sst(pig,pjg) = xv(1) ENDIF DO itrace = PARAM_FIRST_SCALAR, num_tracer CALL rsl_lite_from_parent_msg((((ckde-1))-(ckds)+1)*4,xv) DO k = ckds,(ckde-1) tracer(pig,k,pjg,itrace) = xv(k) ENDDO ENDDO CALL rsl_lite_from_parent_info(pig,pjg,retval) ENDDO CALL get_ijk_from_grid ( grid , & ids, ide, jds, jde, kds, kde, & ims, ime, jms, jme, kms, kme, & ips, ipe, jps, jpe, kps, kpe ) CALL HALO_INTERP_DOWN_sub ( grid, & config_flags, & num_moist, & moist, & num_dfi_moist, & dfi_moist, & num_scalar, & scalar, & num_dfi_scalar, & dfi_scalar, & num_tracer, & tracer, & local_communicator, & mytask, ntasks, ntasks_x, ntasks_y, & ids, ide, jds, jde, kds, kde, & ims, ime, jms, jme, kms, kme, & ips, ipe, jps, jpe, kps, kpe ) IF ( SIZE( grid%lu_index, 1 ) * SIZE( grid%lu_index, 2 ) .GT. 1 ) THEN CALL interp_fcnm ( & grid%lu_index, & cids, cide, 1, 1, cjds, cjde, & cims, cime, 1, 1, cjms, cjme, & cips, cipe, 1, 1, cjps, cjpe, & ngrid%lu_index, & nids, nide, 1, 1, njds, njde, & nims, nime, 1, 1, njms, njme, & nips, nipe, 1, 1, njps, njpe, & config_flags%shw, ngrid%imask_nostag, & .FALSE., .FALSE., & ngrid%i_parent_start, ngrid%j_parent_start, & ngrid%parent_grid_ratio, ngrid%parent_grid_ratio & ) ENDIF IF ( SIZE( grid%u_2, 1 ) * SIZE( grid%u_2, 3 ) .GT. 1 ) THEN CALL interp_fcn ( & grid%u_2, & cids, cide, ckds, ckde, cjds, cjde, & cims, cime, ckms, ckme, cjms, cjme, & cips, cipe, ckps, MIN( (ckde-1), ckpe ), cjps, cjpe, & ngrid%u_2, & nids, nide, nkds, nkde, njds, njde, & nims, nime, nkms, nkme, njms, njme, & nips, nipe, nkps, MIN( (nkde-1), nkpe ), njps, njpe, & config_flags%shw, ngrid%imask_xstag, & .TRUE., .FALSE., & ngrid%i_parent_start, ngrid%j_parent_start, & ngrid%parent_grid_ratio, ngrid%parent_grid_ratio & ) ENDIF IF ( SIZE( grid%v_2, 1 ) * SIZE( grid%v_2, 3 ) .GT. 1 ) THEN CALL interp_fcn ( & grid%v_2, & cids, cide, ckds, ckde, cjds, cjde, & cims, cime, ckms, ckme, cjms, cjme, & cips, cipe, ckps, MIN( (ckde-1), ckpe ), cjps, cjpe, & ngrid%v_2, & nids, nide, nkds, nkde, njds, njde, & nims, nime, nkms, nkme, njms, njme, & nips, nipe, nkps, MIN( (nkde-1), nkpe ), njps, njpe, & config_flags%shw, ngrid%imask_ystag, & .FALSE., .TRUE., & ngrid%i_parent_start, ngrid%j_parent_start, & ngrid%parent_grid_ratio, ngrid%parent_grid_ratio & ) ENDIF IF ( SIZE( grid%w_2, 1 ) * SIZE( grid%w_2, 3 ) .GT. 1 ) THEN CALL interp_fcn ( & grid%w_2, & cids, cide, ckds, ckde, cjds, cjde, & cims, cime, ckms, ckme, cjms, cjme, & cips, cipe, ckps, MIN( ckde, ckpe ), cjps, cjpe, & ngrid%w_2, & nids, nide, nkds, nkde, njds, njde, & nims, nime, nkms, nkme, njms, njme, & nips, nipe, nkps, MIN( nkde, nkpe ), njps, njpe, & config_flags%shw, ngrid%imask_nostag, & .FALSE., .FALSE., & ngrid%i_parent_start, ngrid%j_parent_start, & ngrid%parent_grid_ratio, ngrid%parent_grid_ratio & ) ENDIF IF ( SIZE( grid%ph_2, 1 ) * SIZE( grid%ph_2, 3 ) .GT. 1 ) THEN CALL interp_fcn ( & grid%ph_2, & cids, cide, ckds, ckde, cjds, cjde, & cims, cime, ckms, ckme, cjms, cjme, & cips, cipe, ckps, MIN( ckde, ckpe ), cjps, cjpe, & ngrid%ph_2, & nids, nide, nkds, nkde, njds, njde, & nims, nime, nkms, nkme, njms, njme, & nips, nipe, nkps, MIN( nkde, nkpe ), njps, njpe, & config_flags%shw, ngrid%imask_nostag, & .FALSE., .FALSE., & ngrid%i_parent_start, ngrid%j_parent_start, & ngrid%parent_grid_ratio, ngrid%parent_grid_ratio & ) ENDIF IF ( SIZE( grid%phb, 1 ) * SIZE( grid%phb, 3 ) .GT. 1 ) THEN CALL interp_fcn ( & grid%phb, & cids, cide, ckds, ckde, cjds, cjde, & cims, cime, ckms, ckme, cjms, cjme, & cips, cipe, ckps, MIN( ckde, ckpe ), cjps, cjpe, & ngrid%phb, & nids, nide, nkds, nkde, njds, njde, & nims, nime, nkms, nkme, njms, njme, & nips, nipe, nkps, MIN( nkde, nkpe ), njps, njpe, & config_flags%shw, ngrid%imask_nostag, & .FALSE., .FALSE., & ngrid%i_parent_start, ngrid%j_parent_start, & ngrid%parent_grid_ratio, ngrid%parent_grid_ratio & ) ENDIF IF ( SIZE( grid%t_2, 1 ) * SIZE( grid%t_2, 3 ) .GT. 1 ) THEN CALL interp_fcn ( & grid%t_2, & cids, cide, ckds, ckde, cjds, cjde, & cims, cime, ckms, ckme, cjms, cjme, & cips, cipe, ckps, MIN( (ckde-1), ckpe ), cjps, cjpe, & ngrid%t_2, & nids, nide, nkds, nkde, njds, njde, & nims, nime, nkms, nkme, njms, njme, & nips, nipe, nkps, MIN( (nkde-1), nkpe ), njps, njpe, & config_flags%shw, ngrid%imask_nostag, & .FALSE., .FALSE., & ngrid%i_parent_start, ngrid%j_parent_start, & ngrid%parent_grid_ratio, ngrid%parent_grid_ratio & ) ENDIF IF ( SIZE( grid%mu_2, 1 ) * SIZE( grid%mu_2, 2 ) .GT. 1 ) THEN CALL interp_fcn ( & grid%mu_2, & cids, cide, 1, 1, cjds, cjde, & cims, cime, 1, 1, cjms, cjme, & cips, cipe, 1, 1, cjps, cjpe, & ngrid%mu_2, & nids, nide, 1, 1, njds, njde, & nims, nime, 1, 1, njms, njme, & nips, nipe, 1, 1, njps, njpe, & config_flags%shw, ngrid%imask_nostag, & .FALSE., .FALSE., & ngrid%i_parent_start, ngrid%j_parent_start, & ngrid%parent_grid_ratio, ngrid%parent_grid_ratio & ) ENDIF IF ( SIZE( grid%mub, 1 ) * SIZE( grid%mub, 2 ) .GT. 1 ) THEN CALL interp_fcn ( & grid%mub, & cids, cide, 1, 1, cjds, cjde, & cims, cime, 1, 1, cjms, cjme, & cips, cipe, 1, 1, cjps, cjpe, & ngrid%mub, & nids, nide, 1, 1, njds, njde, & nims, nime, 1, 1, njms, njme, & nips, nipe, 1, 1, njps, njpe, & config_flags%shw, ngrid%imask_nostag, & .FALSE., .FALSE., & ngrid%i_parent_start, ngrid%j_parent_start, & ngrid%parent_grid_ratio, ngrid%parent_grid_ratio & ) ENDIF IF ( SIZE( grid%alb, 1 ) * SIZE( grid%alb, 3 ) .GT. 1 ) THEN CALL interp_fcn ( & grid%alb, & cids, cide, ckds, ckde, cjds, cjde, & cims, cime, ckms, ckme, cjms, cjme, & cips, cipe, ckps, MIN( (ckde-1), ckpe ), cjps, cjpe, & ngrid%alb, & nids, nide, nkds, nkde, njds, njde, & nims, nime, nkms, nkme, njms, njme, & nips, nipe, nkps, MIN( (nkde-1), nkpe ), njps, njpe, & config_flags%shw, ngrid%imask_nostag, & .FALSE., .FALSE., & ngrid%i_parent_start, ngrid%j_parent_start, & ngrid%parent_grid_ratio, ngrid%parent_grid_ratio & ) ENDIF IF ( SIZE( grid%pb, 1 ) * SIZE( grid%pb, 3 ) .GT. 1 ) THEN CALL interp_fcn ( & grid%pb, & cids, cide, ckds, ckde, cjds, cjde, & cims, cime, ckms, ckme, cjms, cjme, & cips, cipe, ckps, MIN( (ckde-1), ckpe ), cjps, cjpe, & ngrid%pb, & nids, nide, nkds, nkde, njds, njde, & nims, nime, nkms, nkme, njms, njme, & nips, nipe, nkps, MIN( (nkde-1), nkpe ), njps, njpe, & config_flags%shw, ngrid%imask_nostag, & .FALSE., .FALSE., & ngrid%i_parent_start, ngrid%j_parent_start, & ngrid%parent_grid_ratio, ngrid%parent_grid_ratio & ) ENDIF IF ( SIZE( grid%q2, 1 ) * SIZE( grid%q2, 2 ) .GT. 1 ) THEN CALL interp_fcn ( & grid%q2, & cids, cide, 1, 1, cjds, cjde, & cims, cime, 1, 1, cjms, cjme, & cips, cipe, 1, 1, cjps, cjpe, & ngrid%q2, & nids, nide, 1, 1, njds, njde, & nims, nime, 1, 1, njms, njme, & nips, nipe, 1, 1, njps, njpe, & config_flags%shw, ngrid%imask_nostag, & .FALSE., .FALSE., & ngrid%i_parent_start, ngrid%j_parent_start, & ngrid%parent_grid_ratio, ngrid%parent_grid_ratio & ) ENDIF IF ( SIZE( grid%t2, 1 ) * SIZE( grid%t2, 2 ) .GT. 1 ) THEN CALL interp_fcn ( & grid%t2, & cids, cide, 1, 1, cjds, cjde, & cims, cime, 1, 1, cjms, cjme, & cips, cipe, 1, 1, cjps, cjpe, & ngrid%t2, & nids, nide, 1, 1, njds, njde, & nims, nime, 1, 1, njms, njme, & nips, nipe, 1, 1, njps, njpe, & config_flags%shw, ngrid%imask_nostag, & .FALSE., .FALSE., & ngrid%i_parent_start, ngrid%j_parent_start, & ngrid%parent_grid_ratio, ngrid%parent_grid_ratio & ) ENDIF IF ( SIZE( grid%th2, 1 ) * SIZE( grid%th2, 2 ) .GT. 1 ) THEN CALL interp_fcn ( & grid%th2, & cids, cide, 1, 1, cjds, cjde, & cims, cime, 1, 1, cjms, cjme, & cips, cipe, 1, 1, cjps, cjpe, & ngrid%th2, & nids, nide, 1, 1, njds, njde, & nims, nime, 1, 1, njms, njme, & nips, nipe, 1, 1, njps, njpe, & config_flags%shw, ngrid%imask_nostag, & .FALSE., .FALSE., & ngrid%i_parent_start, ngrid%j_parent_start, & ngrid%parent_grid_ratio, ngrid%parent_grid_ratio & ) ENDIF IF ( SIZE( grid%psfc, 1 ) * SIZE( grid%psfc, 2 ) .GT. 1 ) THEN CALL interp_fcn ( & grid%psfc, & cids, cide, 1, 1, cjds, cjde, & cims, cime, 1, 1, cjms, cjme, & cips, cipe, 1, 1, cjps, cjpe, & ngrid%psfc, & nids, nide, 1, 1, njds, njde, & nims, nime, 1, 1, njms, njme, & nips, nipe, 1, 1, njps, njpe, & config_flags%shw, ngrid%imask_nostag, & .FALSE., .FALSE., & ngrid%i_parent_start, ngrid%j_parent_start, & ngrid%parent_grid_ratio, ngrid%parent_grid_ratio & ) ENDIF IF ( SIZE( grid%u10, 1 ) * SIZE( grid%u10, 2 ) .GT. 1 ) THEN CALL interp_fcn ( & grid%u10, & cids, cide, 1, 1, cjds, cjde, & cims, cime, 1, 1, cjms, cjme, & cips, cipe, 1, 1, cjps, cjpe, & ngrid%u10, & nids, nide, 1, 1, njds, njde, & nims, nime, 1, 1, njms, njme, & nips, nipe, 1, 1, njps, njpe, & config_flags%shw, ngrid%imask_nostag, & .FALSE., .FALSE., & ngrid%i_parent_start, ngrid%j_parent_start, & ngrid%parent_grid_ratio, ngrid%parent_grid_ratio & ) ENDIF IF ( SIZE( grid%v10, 1 ) * SIZE( grid%v10, 2 ) .GT. 1 ) THEN CALL interp_fcn ( & grid%v10, & cids, cide, 1, 1, cjds, cjde, & cims, cime, 1, 1, cjms, cjme, & cips, cipe, 1, 1, cjps, cjpe, & ngrid%v10, & nids, nide, 1, 1, njds, njde, & nims, nime, 1, 1, njms, njme, & nips, nipe, 1, 1, njps, njpe, & config_flags%shw, ngrid%imask_nostag, & .FALSE., .FALSE., & ngrid%i_parent_start, ngrid%j_parent_start, & ngrid%parent_grid_ratio, ngrid%parent_grid_ratio & ) ENDIF DO itrace = PARAM_FIRST_SCALAR, num_moist IF ( SIZE( moist, 1 ) * SIZE( moist, 3 ) .GT. 1 ) THEN CALL interp_fcn ( & moist(grid%sm31,grid%sm32,grid%sm33,itrace), & cids, cide, ckds, ckde, cjds, cjde, & cims, cime, ckms, ckme, cjms, cjme, & cips, cipe, ckps, MIN( (ckde-1), ckpe ), cjps, cjpe, & ngrid%moist(ngrid%sm31,ngrid%sm32,ngrid%sm33,itrace), & nids, nide, nkds, nkde, njds, njde, & nims, nime, nkms, nkme, njms, njme, & nips, nipe, nkps, MIN( (nkde-1), nkpe ), njps, njpe, & config_flags%shw, ngrid%imask_nostag, & .FALSE., .FALSE., & ngrid%i_parent_start, ngrid%j_parent_start, & ngrid%parent_grid_ratio, ngrid%parent_grid_ratio & ) ENDIF ENDDO DO itrace = PARAM_FIRST_SCALAR, num_dfi_moist IF ( SIZE( dfi_moist, 1 ) * SIZE( dfi_moist, 3 ) .GT. 1 ) THEN CALL interp_fcn ( & dfi_moist(grid%sm31,grid%sm32,grid%sm33,itrace), & cids, cide, ckds, ckde, cjds, cjde, & cims, cime, ckms, ckme, cjms, cjme, & cips, cipe, ckps, MIN( (ckde-1), ckpe ), cjps, cjpe, & ngrid%dfi_moist(ngrid%sm31,ngrid%sm32,ngrid%sm33,itrace), & nids, nide, nkds, nkde, njds, njde, & nims, nime, nkms, nkme, njms, njme, & nips, nipe, nkps, MIN( (nkde-1), nkpe ), njps, njpe, & config_flags%shw, ngrid%imask_nostag, & .FALSE., .FALSE., & ngrid%i_parent_start, ngrid%j_parent_start, & ngrid%parent_grid_ratio, ngrid%parent_grid_ratio & ) ENDIF ENDDO DO itrace = PARAM_FIRST_SCALAR, num_scalar IF ( SIZE( scalar, 1 ) * SIZE( scalar, 3 ) .GT. 1 ) THEN CALL interp_fcn ( & scalar(grid%sm31,grid%sm32,grid%sm33,itrace), & cids, cide, ckds, ckde, cjds, cjde, & cims, cime, ckms, ckme, cjms, cjme, & cips, cipe, ckps, MIN( (ckde-1), ckpe ), cjps, cjpe, & ngrid%scalar(ngrid%sm31,ngrid%sm32,ngrid%sm33,itrace), & nids, nide, nkds, nkde, njds, njde, & nims, nime, nkms, nkme, njms, njme, & nips, nipe, nkps, MIN( (nkde-1), nkpe ), njps, njpe, & config_flags%shw, ngrid%imask_nostag, & .FALSE., .FALSE., & ngrid%i_parent_start, ngrid%j_parent_start, & ngrid%parent_grid_ratio, ngrid%parent_grid_ratio & ) ENDIF ENDDO DO itrace = PARAM_FIRST_SCALAR, num_dfi_scalar IF ( SIZE( dfi_scalar, 1 ) * SIZE( dfi_scalar, 3 ) .GT. 1 ) THEN CALL interp_fcn ( & dfi_scalar(grid%sm31,grid%sm32,grid%sm33,itrace), & cids, cide, ckds, ckde, cjds, cjde, & cims, cime, ckms, ckme, cjms, cjme, & cips, cipe, ckps, MIN( (ckde-1), ckpe ), cjps, cjpe, & ngrid%dfi_scalar(ngrid%sm31,ngrid%sm32,ngrid%sm33,itrace), & nids, nide, nkds, nkde, njds, njde, & nims, nime, nkms, nkme, njms, njme, & nips, nipe, nkps, MIN( (nkde-1), nkpe ), njps, njpe, & config_flags%shw, ngrid%imask_nostag, & .FALSE., .FALSE., & ngrid%i_parent_start, ngrid%j_parent_start, & ngrid%parent_grid_ratio, ngrid%parent_grid_ratio & ) ENDIF ENDDO IF ( SIZE( grid%toposlpx, 1 ) * SIZE( grid%toposlpx, 2 ) .GT. 1 ) THEN CALL interp_fcn ( & grid%toposlpx, & cids, cide, 1, 1, cjds, cjde, & cims, cime, 1, 1, cjms, cjme, & cips, cipe, 1, 1, cjps, cjpe, & ngrid%toposlpx, & nids, nide, 1, 1, njds, njde, & nims, nime, 1, 1, njms, njme, & nips, nipe, 1, 1, njps, njpe, & config_flags%shw, ngrid%imask_nostag, & .FALSE., .FALSE., & ngrid%i_parent_start, ngrid%j_parent_start, & ngrid%parent_grid_ratio, ngrid%parent_grid_ratio & ) ENDIF IF ( SIZE( grid%toposlpy, 1 ) * SIZE( grid%toposlpy, 2 ) .GT. 1 ) THEN CALL interp_fcn ( & grid%toposlpy, & cids, cide, 1, 1, cjds, cjde, & cims, cime, 1, 1, cjms, cjme, & cips, cipe, 1, 1, cjps, cjpe, & ngrid%toposlpy, & nids, nide, 1, 1, njds, njde, & nims, nime, 1, 1, njms, njme, & nips, nipe, 1, 1, njps, njpe, & config_flags%shw, ngrid%imask_nostag, & .FALSE., .FALSE., & ngrid%i_parent_start, ngrid%j_parent_start, & ngrid%parent_grid_ratio, ngrid%parent_grid_ratio & ) ENDIF IF ( SIZE( grid%slope, 1 ) * SIZE( grid%slope, 2 ) .GT. 1 ) THEN CALL interp_fcn ( & grid%slope, & cids, cide, 1, 1, cjds, cjde, & cims, cime, 1, 1, cjms, cjme, & cips, cipe, 1, 1, cjps, cjpe, & ngrid%slope, & nids, nide, 1, 1, njds, njde, & nims, nime, 1, 1, njms, njme, & nips, nipe, 1, 1, njps, njpe, & config_flags%shw, ngrid%imask_nostag, & .FALSE., .FALSE., & ngrid%i_parent_start, ngrid%j_parent_start, & ngrid%parent_grid_ratio, ngrid%parent_grid_ratio & ) ENDIF IF ( SIZE( grid%slp_azi, 1 ) * SIZE( grid%slp_azi, 2 ) .GT. 1 ) THEN CALL interp_fcn ( & grid%slp_azi, & cids, cide, 1, 1, cjds, cjde, & cims, cime, 1, 1, cjms, cjme, & cips, cipe, 1, 1, cjps, cjpe, & ngrid%slp_azi, & nids, nide, 1, 1, njds, njde, & nims, nime, 1, 1, njms, njme, & nips, nipe, 1, 1, njps, njpe, & config_flags%shw, ngrid%imask_nostag, & .FALSE., .FALSE., & ngrid%i_parent_start, ngrid%j_parent_start, & ngrid%parent_grid_ratio, ngrid%parent_grid_ratio & ) ENDIF IF ( .TRUE. ) THEN CALL interp_mask_land_field ( & ( SIZE( grid%shdmax , 1 )*SIZE( grid%shdmax , 2 ) .GT. 1 ), & grid%shdmax, & cids, cide, 1, 1, cjds, cjde, & cims, cime, 1, 1, cjms, cjme, & cips, cipe, 1, 1, cjps, cjpe, & ngrid%shdmax, & nids, nide, 1, 1, njds, njde, & nims, nime, 1, 1, njms, njme, & nips, nipe, 1, 1, njps, njpe, & config_flags%shw, ngrid%imask_nostag, & .FALSE., .FALSE., & ngrid%i_parent_start, ngrid%j_parent_start, & ngrid%parent_grid_ratio, ngrid%parent_grid_ratio & ,grid%lu_index,ngrid%lu_index & ) ENDIF IF ( .TRUE. ) THEN CALL interp_mask_land_field ( & ( SIZE( grid%shdmin , 1 )*SIZE( grid%shdmin , 2 ) .GT. 1 ), & grid%shdmin, & cids, cide, 1, 1, cjds, cjde, & cims, cime, 1, 1, cjms, cjme, & cips, cipe, 1, 1, cjps, cjpe, & ngrid%shdmin, & nids, nide, 1, 1, njds, njde, & nims, nime, 1, 1, njms, njme, & nips, nipe, 1, 1, njps, njpe, & config_flags%shw, ngrid%imask_nostag, & .FALSE., .FALSE., & ngrid%i_parent_start, ngrid%j_parent_start, & ngrid%parent_grid_ratio, ngrid%parent_grid_ratio & ,grid%lu_index,ngrid%lu_index & ) ENDIF IF ( .TRUE. ) THEN CALL interp_mask_land_field ( & ( SIZE( grid%tslb , 1 )*SIZE( grid%tslb , 3 ) .GT. 1 ), & grid%tslb, & cids, cide, 1, config_flags%num_soil_layers, cjds, cjde, & cims, cime, 1, config_flags%num_soil_layers, cjms, cjme, & cips, cipe, 1, config_flags%num_soil_layers, cjps, cjpe, & ngrid%tslb, & nids, nide, 1, config_flags%num_soil_layers, njds, njde, & nims, nime, 1, config_flags%num_soil_layers, njms, njme, & nips, nipe, 1, config_flags%num_soil_layers, njps, njpe, & config_flags%shw, ngrid%imask_nostag, & .FALSE., .FALSE., & ngrid%i_parent_start, ngrid%j_parent_start, & ngrid%parent_grid_ratio, ngrid%parent_grid_ratio & ,grid%lu_index,ngrid%lu_index & ) ENDIF IF ( .TRUE. ) THEN CALL interp_mask_land_field ( & ( SIZE( grid%smois , 1 )*SIZE( grid%smois , 3 ) .GT. 1 ), & grid%smois, & cids, cide, 1, config_flags%num_soil_layers, cjds, cjde, & cims, cime, 1, config_flags%num_soil_layers, cjms, cjme, & cips, cipe, 1, config_flags%num_soil_layers, cjps, cjpe, & ngrid%smois, & nids, nide, 1, config_flags%num_soil_layers, njds, njde, & nims, nime, 1, config_flags%num_soil_layers, njms, njme, & nips, nipe, 1, config_flags%num_soil_layers, njps, njpe, & config_flags%shw, ngrid%imask_nostag, & .FALSE., .FALSE., & ngrid%i_parent_start, ngrid%j_parent_start, & ngrid%parent_grid_ratio, ngrid%parent_grid_ratio & ,grid%lu_index,ngrid%lu_index & ) ENDIF IF ( .TRUE. ) THEN CALL interp_mask_land_field ( & ( SIZE( grid%sh2o , 1 )*SIZE( grid%sh2o , 3 ) .GT. 1 ), & grid%sh2o, & cids, cide, 1, config_flags%num_soil_layers, cjds, cjde, & cims, cime, 1, config_flags%num_soil_layers, cjms, cjme, & cips, cipe, 1, config_flags%num_soil_layers, cjps, cjpe, & ngrid%sh2o, & nids, nide, 1, config_flags%num_soil_layers, njds, njde, & nims, nime, 1, config_flags%num_soil_layers, njms, njme, & nips, nipe, 1, config_flags%num_soil_layers, njps, njpe, & config_flags%shw, ngrid%imask_nostag, & .FALSE., .FALSE., & ngrid%i_parent_start, ngrid%j_parent_start, & ngrid%parent_grid_ratio, ngrid%parent_grid_ratio & ,grid%lu_index,ngrid%lu_index & ) ENDIF IF ( .TRUE. ) THEN CALL interp_mask_land_field ( & ( SIZE( grid%smcrel , 1 )*SIZE( grid%smcrel , 3 ) .GT. 1 ), & grid%smcrel, & cids, cide, 1, config_flags%num_soil_layers, cjds, cjde, & cims, cime, 1, config_flags%num_soil_layers, cjms, cjme, & cips, cipe, 1, config_flags%num_soil_layers, cjps, cjpe, & ngrid%smcrel, & nids, nide, 1, config_flags%num_soil_layers, njds, njde, & nims, nime, 1, config_flags%num_soil_layers, njms, njme, & nips, nipe, 1, config_flags%num_soil_layers, njps, njpe, & config_flags%shw, ngrid%imask_nostag, & .FALSE., .FALSE., & ngrid%i_parent_start, ngrid%j_parent_start, & ngrid%parent_grid_ratio, ngrid%parent_grid_ratio & ,grid%lu_index,ngrid%lu_index & ) ENDIF IF ( .TRUE. ) THEN CALL interp_mask_water_field ( & ( SIZE( grid%xice , 1 )*SIZE( grid%xice , 2 ) .GT. 1 ), & grid%xice, & cids, cide, 1, 1, cjds, cjde, & cims, cime, 1, 1, cjms, cjme, & cips, cipe, 1, 1, cjps, cjpe, & ngrid%xice, & nids, nide, 1, 1, njds, njde, & nims, nime, 1, 1, njms, njme, & nips, nipe, 1, 1, njps, njpe, & config_flags%shw, ngrid%imask_nostag, & .FALSE., .FALSE., & ngrid%i_parent_start, ngrid%j_parent_start, & ngrid%parent_grid_ratio, ngrid%parent_grid_ratio & ,grid%lu_index,ngrid%lu_index & ,grid%isice,ngrid%isice & ) ENDIF IF ( .TRUE. ) THEN CALL interp_mask_water_field ( & ( SIZE( grid%xicem , 1 )*SIZE( grid%xicem , 2 ) .GT. 1 ), & grid%xicem, & cids, cide, 1, 1, cjds, cjde, & cims, cime, 1, 1, cjms, cjme, & cips, cipe, 1, 1, cjps, cjpe, & ngrid%xicem, & nids, nide, 1, 1, njds, njde, & nims, nime, 1, 1, njms, njme, & nips, nipe, 1, 1, njps, njpe, & config_flags%shw, ngrid%imask_nostag, & .FALSE., .FALSE., & ngrid%i_parent_start, ngrid%j_parent_start, & ngrid%parent_grid_ratio, ngrid%parent_grid_ratio & ,grid%lu_index,ngrid%lu_index & ,grid%isice,ngrid%isice & ) ENDIF IF ( .TRUE. ) THEN CALL interp_mask_land_field ( & ( SIZE( grid%smstav , 1 )*SIZE( grid%smstav , 2 ) .GT. 1 ), & grid%smstav, & cids, cide, 1, 1, cjds, cjde, & cims, cime, 1, 1, cjms, cjme, & cips, cipe, 1, 1, cjps, cjpe, & ngrid%smstav, & nids, nide, 1, 1, njds, njde, & nims, nime, 1, 1, njms, njme, & nips, nipe, 1, 1, njps, njpe, & config_flags%shw, ngrid%imask_nostag, & .FALSE., .FALSE., & ngrid%i_parent_start, ngrid%j_parent_start, & ngrid%parent_grid_ratio, ngrid%parent_grid_ratio & ,grid%lu_index,ngrid%lu_index & ) ENDIF IF ( .TRUE. ) THEN CALL interp_mask_land_field ( & ( SIZE( grid%sfcrunoff , 1 )*SIZE( grid%sfcrunoff , 2 ) .GT. 1 ), & grid%sfcrunoff, & cids, cide, 1, 1, cjds, cjde, & cims, cime, 1, 1, cjms, cjme, & cips, cipe, 1, 1, cjps, cjpe, & ngrid%sfcrunoff, & nids, nide, 1, 1, njds, njde, & nims, nime, 1, 1, njms, njme, & nips, nipe, 1, 1, njps, njpe, & config_flags%shw, ngrid%imask_nostag, & .FALSE., .FALSE., & ngrid%i_parent_start, ngrid%j_parent_start, & ngrid%parent_grid_ratio, ngrid%parent_grid_ratio & ,grid%lu_index,ngrid%lu_index & ) ENDIF IF ( .TRUE. ) THEN CALL interp_mask_land_field ( & ( SIZE( grid%udrunoff , 1 )*SIZE( grid%udrunoff , 2 ) .GT. 1 ), & grid%udrunoff, & cids, cide, 1, 1, cjds, cjde, & cims, cime, 1, 1, cjms, cjme, & cips, cipe, 1, 1, cjps, cjpe, & ngrid%udrunoff, & nids, nide, 1, 1, njds, njde, & nims, nime, 1, 1, njms, njme, & nips, nipe, 1, 1, njps, njpe, & config_flags%shw, ngrid%imask_nostag, & .FALSE., .FALSE., & ngrid%i_parent_start, ngrid%j_parent_start, & ngrid%parent_grid_ratio, ngrid%parent_grid_ratio & ,grid%lu_index,ngrid%lu_index & ) ENDIF IF ( SIZE( grid%ivgtyp, 1 ) * SIZE( grid%ivgtyp, 2 ) .GT. 1 ) THEN CALL interp_fcni ( & grid%ivgtyp, & cids, cide, 1, 1, cjds, cjde, & cims, cime, 1, 1, cjms, cjme, & cips, cipe, 1, 1, cjps, cjpe, & ngrid%ivgtyp, & nids, nide, 1, 1, njds, njde, & nims, nime, 1, 1, njms, njme, & nips, nipe, 1, 1, njps, njpe, & config_flags%shw, ngrid%imask_nostag, & .FALSE., .FALSE., & ngrid%i_parent_start, ngrid%j_parent_start, & ngrid%parent_grid_ratio, ngrid%parent_grid_ratio & ) ENDIF IF ( SIZE( grid%isltyp, 1 ) * SIZE( grid%isltyp, 2 ) .GT. 1 ) THEN CALL interp_fcni ( & grid%isltyp, & cids, cide, 1, 1, cjds, cjde, & cims, cime, 1, 1, cjms, cjme, & cips, cipe, 1, 1, cjps, cjpe, & ngrid%isltyp, & nids, nide, 1, 1, njds, njde, & nims, nime, 1, 1, njms, njme, & nips, nipe, 1, 1, njps, njpe, & config_flags%shw, ngrid%imask_nostag, & .FALSE., .FALSE., & ngrid%i_parent_start, ngrid%j_parent_start, & ngrid%parent_grid_ratio, ngrid%parent_grid_ratio & ) ENDIF IF ( .TRUE. ) THEN CALL interp_mask_land_field ( & ( SIZE( grid%vegfra , 1 )*SIZE( grid%vegfra , 2 ) .GT. 1 ), & grid%vegfra, & cids, cide, 1, 1, cjds, cjde, & cims, cime, 1, 1, cjms, cjme, & cips, cipe, 1, 1, cjps, cjpe, & ngrid%vegfra, & nids, nide, 1, 1, njds, njde, & nims, nime, 1, 1, njms, njme, & nips, nipe, 1, 1, njps, njpe, & config_flags%shw, ngrid%imask_nostag, & .FALSE., .FALSE., & ngrid%i_parent_start, ngrid%j_parent_start, & ngrid%parent_grid_ratio, ngrid%parent_grid_ratio & ,grid%lu_index,ngrid%lu_index & ) ENDIF IF ( SIZE( grid%acgrdflx, 1 ) * SIZE( grid%acgrdflx, 2 ) .GT. 1 ) THEN CALL interp_fcn ( & grid%acgrdflx, & cids, cide, 1, 1, cjds, cjde, & cims, cime, 1, 1, cjms, cjme, & cips, cipe, 1, 1, cjps, cjpe, & ngrid%acgrdflx, & nids, nide, 1, 1, njds, njde, & nims, nime, 1, 1, njms, njme, & nips, nipe, 1, 1, njps, njpe, & config_flags%shw, ngrid%imask_nostag, & .FALSE., .FALSE., & ngrid%i_parent_start, ngrid%j_parent_start, & ngrid%parent_grid_ratio, ngrid%parent_grid_ratio & ) ENDIF IF ( .TRUE. ) THEN CALL interp_mask_land_field ( & ( SIZE( grid%acsnow , 1 )*SIZE( grid%acsnow , 2 ) .GT. 1 ), & grid%acsnow, & cids, cide, 1, 1, cjds, cjde, & cims, cime, 1, 1, cjms, cjme, & cips, cipe, 1, 1, cjps, cjpe, & ngrid%acsnow, & nids, nide, 1, 1, njds, njde, & nims, nime, 1, 1, njms, njme, & nips, nipe, 1, 1, njps, njpe, & config_flags%shw, ngrid%imask_nostag, & .FALSE., .FALSE., & ngrid%i_parent_start, ngrid%j_parent_start, & ngrid%parent_grid_ratio, ngrid%parent_grid_ratio & ,grid%lu_index,ngrid%lu_index & ) ENDIF IF ( .TRUE. ) THEN CALL interp_mask_land_field ( & ( SIZE( grid%acsnom , 1 )*SIZE( grid%acsnom , 2 ) .GT. 1 ), & grid%acsnom, & cids, cide, 1, 1, cjds, cjde, & cims, cime, 1, 1, cjms, cjme, & cips, cipe, 1, 1, cjps, cjpe, & ngrid%acsnom, & nids, nide, 1, 1, njds, njde, & nims, nime, 1, 1, njms, njme, & nips, nipe, 1, 1, njps, njpe, & config_flags%shw, ngrid%imask_nostag, & .FALSE., .FALSE., & ngrid%i_parent_start, ngrid%j_parent_start, & ngrid%parent_grid_ratio, ngrid%parent_grid_ratio & ,grid%lu_index,ngrid%lu_index & ) ENDIF IF ( .TRUE. ) THEN CALL interp_mask_land_field ( & ( SIZE( grid%snow , 1 )*SIZE( grid%snow , 2 ) .GT. 1 ), & grid%snow, & cids, cide, 1, 1, cjds, cjde, & cims, cime, 1, 1, cjms, cjme, & cips, cipe, 1, 1, cjps, cjpe, & ngrid%snow, & nids, nide, 1, 1, njds, njde, & nims, nime, 1, 1, njms, njme, & nips, nipe, 1, 1, njps, njpe, & config_flags%shw, ngrid%imask_nostag, & .FALSE., .FALSE., & ngrid%i_parent_start, ngrid%j_parent_start, & ngrid%parent_grid_ratio, ngrid%parent_grid_ratio & ,grid%lu_index,ngrid%lu_index & ) ENDIF IF ( .TRUE. ) THEN CALL interp_mask_land_field ( & ( SIZE( grid%snowh , 1 )*SIZE( grid%snowh , 2 ) .GT. 1 ), & grid%snowh, & cids, cide, 1, 1, cjds, cjde, & cims, cime, 1, 1, cjms, cjme, & cips, cipe, 1, 1, cjps, cjpe, & ngrid%snowh, & nids, nide, 1, 1, njds, njde, & nims, nime, 1, 1, njms, njme, & nips, nipe, 1, 1, njps, njpe, & config_flags%shw, ngrid%imask_nostag, & .FALSE., .FALSE., & ngrid%i_parent_start, ngrid%j_parent_start, & ngrid%parent_grid_ratio, ngrid%parent_grid_ratio & ,grid%lu_index,ngrid%lu_index & ) ENDIF IF ( .TRUE. ) THEN CALL interp_mask_land_field ( & ( SIZE( grid%canwat , 1 )*SIZE( grid%canwat , 2 ) .GT. 1 ), & grid%canwat, & cids, cide, 1, 1, cjds, cjde, & cims, cime, 1, 1, cjms, cjme, & cips, cipe, 1, 1, cjps, cjpe, & ngrid%canwat, & nids, nide, 1, 1, njds, njde, & nims, nime, 1, 1, njms, njme, & nips, nipe, 1, 1, njps, njpe, & config_flags%shw, ngrid%imask_nostag, & .FALSE., .FALSE., & ngrid%i_parent_start, ngrid%j_parent_start, & ngrid%parent_grid_ratio, ngrid%parent_grid_ratio & ,grid%lu_index,ngrid%lu_index & ) ENDIF IF ( .TRUE. ) THEN CALL interp_mask_water_field ( & ( SIZE( grid%sstsk , 1 )*SIZE( grid%sstsk , 2 ) .GT. 1 ), & grid%sstsk, & cids, cide, 1, 1, cjds, cjde, & cims, cime, 1, 1, cjms, cjme, & cips, cipe, 1, 1, cjps, cjpe, & ngrid%sstsk, & nids, nide, 1, 1, njds, njde, & nims, nime, 1, 1, njms, njme, & nips, nipe, 1, 1, njps, njpe, & config_flags%shw, ngrid%imask_nostag, & .FALSE., .FALSE., & ngrid%i_parent_start, ngrid%j_parent_start, & ngrid%parent_grid_ratio, ngrid%parent_grid_ratio & ,grid%lu_index,ngrid%lu_index & ,grid%iswater,ngrid%iswater & ) ENDIF IF ( .TRUE. ) THEN CALL interp_mask_land_field ( & ( SIZE( grid%tr_urb2d , 1 )*SIZE( grid%tr_urb2d , 2 ) .GT. 1 ), & grid%tr_urb2d, & cids, cide, 1, 1, cjds, cjde, & cims, cime, 1, 1, cjms, cjme, & cips, cipe, 1, 1, cjps, cjpe, & ngrid%tr_urb2d, & nids, nide, 1, 1, njds, njde, & nims, nime, 1, 1, njms, njme, & nips, nipe, 1, 1, njps, njpe, & config_flags%shw, ngrid%imask_nostag, & .FALSE., .FALSE., & ngrid%i_parent_start, ngrid%j_parent_start, & ngrid%parent_grid_ratio, ngrid%parent_grid_ratio & ,grid%lu_index,ngrid%lu_index & ) ENDIF IF ( .TRUE. ) THEN CALL interp_mask_land_field ( & ( SIZE( grid%tb_urb2d , 1 )*SIZE( grid%tb_urb2d , 2 ) .GT. 1 ), & grid%tb_urb2d, & cids, cide, 1, 1, cjds, cjde, & cims, cime, 1, 1, cjms, cjme, & cips, cipe, 1, 1, cjps, cjpe, & ngrid%tb_urb2d, & nids, nide, 1, 1, njds, njde, & nims, nime, 1, 1, njms, njme, & nips, nipe, 1, 1, njps, njpe, & config_flags%shw, ngrid%imask_nostag, & .FALSE., .FALSE., & ngrid%i_parent_start, ngrid%j_parent_start, & ngrid%parent_grid_ratio, ngrid%parent_grid_ratio & ,grid%lu_index,ngrid%lu_index & ) ENDIF IF ( .TRUE. ) THEN CALL interp_mask_land_field ( & ( SIZE( grid%tg_urb2d , 1 )*SIZE( grid%tg_urb2d , 2 ) .GT. 1 ), & grid%tg_urb2d, & cids, cide, 1, 1, cjds, cjde, & cims, cime, 1, 1, cjms, cjme, & cips, cipe, 1, 1, cjps, cjpe, & ngrid%tg_urb2d, & nids, nide, 1, 1, njds, njde, & nims, nime, 1, 1, njms, njme, & nips, nipe, 1, 1, njps, njpe, & config_flags%shw, ngrid%imask_nostag, & .FALSE., .FALSE., & ngrid%i_parent_start, ngrid%j_parent_start, & ngrid%parent_grid_ratio, ngrid%parent_grid_ratio & ,grid%lu_index,ngrid%lu_index & ) ENDIF IF ( .TRUE. ) THEN CALL interp_mask_land_field ( & ( SIZE( grid%tc_urb2d , 1 )*SIZE( grid%tc_urb2d , 2 ) .GT. 1 ), & grid%tc_urb2d, & cids, cide, 1, 1, cjds, cjde, & cims, cime, 1, 1, cjms, cjme, & cips, cipe, 1, 1, cjps, cjpe, & ngrid%tc_urb2d, & nids, nide, 1, 1, njds, njde, & nims, nime, 1, 1, njms, njme, & nips, nipe, 1, 1, njps, njpe, & config_flags%shw, ngrid%imask_nostag, & .FALSE., .FALSE., & ngrid%i_parent_start, ngrid%j_parent_start, & ngrid%parent_grid_ratio, ngrid%parent_grid_ratio & ,grid%lu_index,ngrid%lu_index & ) ENDIF IF ( .TRUE. ) THEN CALL interp_mask_land_field ( & ( SIZE( grid%qc_urb2d , 1 )*SIZE( grid%qc_urb2d , 2 ) .GT. 1 ), & grid%qc_urb2d, & cids, cide, 1, 1, cjds, cjde, & cims, cime, 1, 1, cjms, cjme, & cips, cipe, 1, 1, cjps, cjpe, & ngrid%qc_urb2d, & nids, nide, 1, 1, njds, njde, & nims, nime, 1, 1, njms, njme, & nips, nipe, 1, 1, njps, njpe, & config_flags%shw, ngrid%imask_nostag, & .FALSE., .FALSE., & ngrid%i_parent_start, ngrid%j_parent_start, & ngrid%parent_grid_ratio, ngrid%parent_grid_ratio & ,grid%lu_index,ngrid%lu_index & ) ENDIF IF ( .TRUE. ) THEN CALL interp_mask_land_field ( & ( SIZE( grid%uc_urb2d , 1 )*SIZE( grid%uc_urb2d , 2 ) .GT. 1 ), & grid%uc_urb2d, & cids, cide, 1, 1, cjds, cjde, & cims, cime, 1, 1, cjms, cjme, & cips, cipe, 1, 1, cjps, cjpe, & ngrid%uc_urb2d, & nids, nide, 1, 1, njds, njde, & nims, nime, 1, 1, njms, njme, & nips, nipe, 1, 1, njps, njpe, & config_flags%shw, ngrid%imask_nostag, & .FALSE., .FALSE., & ngrid%i_parent_start, ngrid%j_parent_start, & ngrid%parent_grid_ratio, ngrid%parent_grid_ratio & ,grid%lu_index,ngrid%lu_index & ) ENDIF IF ( .TRUE. ) THEN CALL interp_mask_land_field ( & ( SIZE( grid%xxxr_urb2d , 1 )*SIZE( grid%xxxr_urb2d , 2 ) .GT. 1 ), & grid%xxxr_urb2d, & cids, cide, 1, 1, cjds, cjde, & cims, cime, 1, 1, cjms, cjme, & cips, cipe, 1, 1, cjps, cjpe, & ngrid%xxxr_urb2d, & nids, nide, 1, 1, njds, njde, & nims, nime, 1, 1, njms, njme, & nips, nipe, 1, 1, njps, njpe, & config_flags%shw, ngrid%imask_nostag, & .FALSE., .FALSE., & ngrid%i_parent_start, ngrid%j_parent_start, & ngrid%parent_grid_ratio, ngrid%parent_grid_ratio & ,grid%lu_index,ngrid%lu_index & ) ENDIF IF ( .TRUE. ) THEN CALL interp_mask_land_field ( & ( SIZE( grid%xxxb_urb2d , 1 )*SIZE( grid%xxxb_urb2d , 2 ) .GT. 1 ), & grid%xxxb_urb2d, & cids, cide, 1, 1, cjds, cjde, & cims, cime, 1, 1, cjms, cjme, & cips, cipe, 1, 1, cjps, cjpe, & ngrid%xxxb_urb2d, & nids, nide, 1, 1, njds, njde, & nims, nime, 1, 1, njms, njme, & nips, nipe, 1, 1, njps, njpe, & config_flags%shw, ngrid%imask_nostag, & .FALSE., .FALSE., & ngrid%i_parent_start, ngrid%j_parent_start, & ngrid%parent_grid_ratio, ngrid%parent_grid_ratio & ,grid%lu_index,ngrid%lu_index & ) ENDIF IF ( .TRUE. ) THEN CALL interp_mask_land_field ( & ( SIZE( grid%xxxg_urb2d , 1 )*SIZE( grid%xxxg_urb2d , 2 ) .GT. 1 ), & grid%xxxg_urb2d, & cids, cide, 1, 1, cjds, cjde, & cims, cime, 1, 1, cjms, cjme, & cips, cipe, 1, 1, cjps, cjpe, & ngrid%xxxg_urb2d, & nids, nide, 1, 1, njds, njde, & nims, nime, 1, 1, njms, njme, & nips, nipe, 1, 1, njps, njpe, & config_flags%shw, ngrid%imask_nostag, & .FALSE., .FALSE., & ngrid%i_parent_start, ngrid%j_parent_start, & ngrid%parent_grid_ratio, ngrid%parent_grid_ratio & ,grid%lu_index,ngrid%lu_index & ) ENDIF IF ( .TRUE. ) THEN CALL interp_mask_land_field ( & ( SIZE( grid%xxxc_urb2d , 1 )*SIZE( grid%xxxc_urb2d , 2 ) .GT. 1 ), & grid%xxxc_urb2d, & cids, cide, 1, 1, cjds, cjde, & cims, cime, 1, 1, cjms, cjme, & cips, cipe, 1, 1, cjps, cjpe, & ngrid%xxxc_urb2d, & nids, nide, 1, 1, njds, njde, & nims, nime, 1, 1, njms, njme, & nips, nipe, 1, 1, njps, njpe, & config_flags%shw, ngrid%imask_nostag, & .FALSE., .FALSE., & ngrid%i_parent_start, ngrid%j_parent_start, & ngrid%parent_grid_ratio, ngrid%parent_grid_ratio & ,grid%lu_index,ngrid%lu_index & ) ENDIF IF ( .TRUE. ) THEN CALL interp_mask_land_field ( & ( SIZE( grid%trl_urb3d , 1 )*SIZE( grid%trl_urb3d , 3 ) .GT. 1 ), & grid%trl_urb3d, & cids, cide, 1, config_flags%num_soil_layers, cjds, cjde, & cims, cime, 1, config_flags%num_soil_layers, cjms, cjme, & cips, cipe, 1, config_flags%num_soil_layers, cjps, cjpe, & ngrid%trl_urb3d, & nids, nide, 1, config_flags%num_soil_layers, njds, njde, & nims, nime, 1, config_flags%num_soil_layers, njms, njme, & nips, nipe, 1, config_flags%num_soil_layers, njps, njpe, & config_flags%shw, ngrid%imask_nostag, & .FALSE., .FALSE., & ngrid%i_parent_start, ngrid%j_parent_start, & ngrid%parent_grid_ratio, ngrid%parent_grid_ratio & ,grid%lu_index,ngrid%lu_index & ) ENDIF IF ( .TRUE. ) THEN CALL interp_mask_land_field ( & ( SIZE( grid%tbl_urb3d , 1 )*SIZE( grid%tbl_urb3d , 3 ) .GT. 1 ), & grid%tbl_urb3d, & cids, cide, 1, config_flags%num_soil_layers, cjds, cjde, & cims, cime, 1, config_flags%num_soil_layers, cjms, cjme, & cips, cipe, 1, config_flags%num_soil_layers, cjps, cjpe, & ngrid%tbl_urb3d, & nids, nide, 1, config_flags%num_soil_layers, njds, njde, & nims, nime, 1, config_flags%num_soil_layers, njms, njme, & nips, nipe, 1, config_flags%num_soil_layers, njps, njpe, & config_flags%shw, ngrid%imask_nostag, & .FALSE., .FALSE., & ngrid%i_parent_start, ngrid%j_parent_start, & ngrid%parent_grid_ratio, ngrid%parent_grid_ratio & ,grid%lu_index,ngrid%lu_index & ) ENDIF IF ( .TRUE. ) THEN CALL interp_mask_land_field ( & ( SIZE( grid%tgl_urb3d , 1 )*SIZE( grid%tgl_urb3d , 3 ) .GT. 1 ), & grid%tgl_urb3d, & cids, cide, 1, config_flags%num_soil_layers, cjds, cjde, & cims, cime, 1, config_flags%num_soil_layers, cjms, cjme, & cips, cipe, 1, config_flags%num_soil_layers, cjps, cjpe, & ngrid%tgl_urb3d, & nids, nide, 1, config_flags%num_soil_layers, njds, njde, & nims, nime, 1, config_flags%num_soil_layers, njms, njme, & nips, nipe, 1, config_flags%num_soil_layers, njps, njpe, & config_flags%shw, ngrid%imask_nostag, & .FALSE., .FALSE., & ngrid%i_parent_start, ngrid%j_parent_start, & ngrid%parent_grid_ratio, ngrid%parent_grid_ratio & ,grid%lu_index,ngrid%lu_index & ) ENDIF IF ( SIZE( grid%frc_urb2d, 1 ) * SIZE( grid%frc_urb2d, 2 ) .GT. 1 ) THEN CALL interp_fcnm ( & grid%frc_urb2d, & cids, cide, 1, 1, cjds, cjde, & cims, cime, 1, 1, cjms, cjme, & cips, cipe, 1, 1, cjps, cjpe, & ngrid%frc_urb2d, & nids, nide, 1, 1, njds, njde, & nims, nime, 1, 1, njms, njme, & nips, nipe, 1, 1, njps, njpe, & config_flags%shw, ngrid%imask_nostag, & .FALSE., .FALSE., & ngrid%i_parent_start, ngrid%j_parent_start, & ngrid%parent_grid_ratio, ngrid%parent_grid_ratio & ) ENDIF IF ( SIZE( grid%utype_urb2d, 1 ) * SIZE( grid%utype_urb2d, 2 ) .GT. 1 ) THEN CALL interp_fcnm ( & grid%utype_urb2d, & cids, cide, 1, 1, cjds, cjde, & cims, cime, 1, 1, cjms, cjme, & cips, cipe, 1, 1, cjps, cjpe, & ngrid%utype_urb2d, & nids, nide, 1, 1, njds, njde, & nims, nime, 1, 1, njms, njme, & nips, nipe, 1, 1, njps, njpe, & config_flags%shw, ngrid%imask_nostag, & .FALSE., .FALSE., & ngrid%i_parent_start, ngrid%j_parent_start, & ngrid%parent_grid_ratio, ngrid%parent_grid_ratio & ) ENDIF IF ( SIZE( grid%var2d, 1 ) * SIZE( grid%var2d, 2 ) .GT. 1 ) THEN CALL interp_fcn ( & grid%var2d, & cids, cide, 1, 1, cjds, cjde, & cims, cime, 1, 1, cjms, cjme, & cips, cipe, 1, 1, cjps, cjpe, & ngrid%var2d, & nids, nide, 1, 1, njds, njde, & nims, nime, 1, 1, njms, njme, & nips, nipe, 1, 1, njps, njpe, & config_flags%shw, ngrid%imask_nostag, & .FALSE., .FALSE., & ngrid%i_parent_start, ngrid%j_parent_start, & ngrid%parent_grid_ratio, ngrid%parent_grid_ratio & ) ENDIF IF ( SIZE( grid%oc12d, 1 ) * SIZE( grid%oc12d, 2 ) .GT. 1 ) THEN CALL interp_fcn ( & grid%oc12d, & cids, cide, 1, 1, cjds, cjde, & cims, cime, 1, 1, cjms, cjme, & cips, cipe, 1, 1, cjps, cjpe, & ngrid%oc12d, & nids, nide, 1, 1, njds, njde, & nims, nime, 1, 1, njms, njme, & nips, nipe, 1, 1, njps, njpe, & config_flags%shw, ngrid%imask_nostag, & .FALSE., .FALSE., & ngrid%i_parent_start, ngrid%j_parent_start, & ngrid%parent_grid_ratio, ngrid%parent_grid_ratio & ) ENDIF IF ( SIZE( grid%oa1, 1 ) * SIZE( grid%oa1, 2 ) .GT. 1 ) THEN CALL interp_fcn ( & grid%oa1, & cids, cide, 1, 1, cjds, cjde, & cims, cime, 1, 1, cjms, cjme, & cips, cipe, 1, 1, cjps, cjpe, & ngrid%oa1, & nids, nide, 1, 1, njds, njde, & nims, nime, 1, 1, njms, njme, & nips, nipe, 1, 1, njps, njpe, & config_flags%shw, ngrid%imask_nostag, & .FALSE., .FALSE., & ngrid%i_parent_start, ngrid%j_parent_start, & ngrid%parent_grid_ratio, ngrid%parent_grid_ratio & ) ENDIF IF ( SIZE( grid%oa2, 1 ) * SIZE( grid%oa2, 2 ) .GT. 1 ) THEN CALL interp_fcn ( & grid%oa2, & cids, cide, 1, 1, cjds, cjde, & cims, cime, 1, 1, cjms, cjme, & cips, cipe, 1, 1, cjps, cjpe, & ngrid%oa2, & nids, nide, 1, 1, njds, njde, & nims, nime, 1, 1, njms, njme, & nips, nipe, 1, 1, njps, njpe, & config_flags%shw, ngrid%imask_nostag, & .FALSE., .FALSE., & ngrid%i_parent_start, ngrid%j_parent_start, & ngrid%parent_grid_ratio, ngrid%parent_grid_ratio & ) ENDIF IF ( SIZE( grid%oa3, 1 ) * SIZE( grid%oa3, 2 ) .GT. 1 ) THEN CALL interp_fcn ( & grid%oa3, & cids, cide, 1, 1, cjds, cjde, & cims, cime, 1, 1, cjms, cjme, & cips, cipe, 1, 1, cjps, cjpe, & ngrid%oa3, & nids, nide, 1, 1, njds, njde, & nims, nime, 1, 1, njms, njme, & nips, nipe, 1, 1, njps, njpe, & config_flags%shw, ngrid%imask_nostag, & .FALSE., .FALSE., & ngrid%i_parent_start, ngrid%j_parent_start, & ngrid%parent_grid_ratio, ngrid%parent_grid_ratio & ) ENDIF IF ( SIZE( grid%oa4, 1 ) * SIZE( grid%oa4, 2 ) .GT. 1 ) THEN CALL interp_fcn ( & grid%oa4, & cids, cide, 1, 1, cjds, cjde, & cims, cime, 1, 1, cjms, cjme, & cips, cipe, 1, 1, cjps, cjpe, & ngrid%oa4, & nids, nide, 1, 1, njds, njde, & nims, nime, 1, 1, njms, njme, & nips, nipe, 1, 1, njps, njpe, & config_flags%shw, ngrid%imask_nostag, & .FALSE., .FALSE., & ngrid%i_parent_start, ngrid%j_parent_start, & ngrid%parent_grid_ratio, ngrid%parent_grid_ratio & ) ENDIF IF ( SIZE( grid%ol1, 1 ) * SIZE( grid%ol1, 2 ) .GT. 1 ) THEN CALL interp_fcn ( & grid%ol1, & cids, cide, 1, 1, cjds, cjde, & cims, cime, 1, 1, cjms, cjme, & cips, cipe, 1, 1, cjps, cjpe, & ngrid%ol1, & nids, nide, 1, 1, njds, njde, & nims, nime, 1, 1, njms, njme, & nips, nipe, 1, 1, njps, njpe, & config_flags%shw, ngrid%imask_nostag, & .FALSE., .FALSE., & ngrid%i_parent_start, ngrid%j_parent_start, & ngrid%parent_grid_ratio, ngrid%parent_grid_ratio & ) ENDIF IF ( SIZE( grid%ol2, 1 ) * SIZE( grid%ol2, 2 ) .GT. 1 ) THEN CALL interp_fcn ( & grid%ol2, & cids, cide, 1, 1, cjds, cjde, & cims, cime, 1, 1, cjms, cjme, & cips, cipe, 1, 1, cjps, cjpe, & ngrid%ol2, & nids, nide, 1, 1, njds, njde, & nims, nime, 1, 1, njms, njme, & nips, nipe, 1, 1, njps, njpe, & config_flags%shw, ngrid%imask_nostag, & .FALSE., .FALSE., & ngrid%i_parent_start, ngrid%j_parent_start, & ngrid%parent_grid_ratio, ngrid%parent_grid_ratio & ) ENDIF IF ( SIZE( grid%ol3, 1 ) * SIZE( grid%ol3, 2 ) .GT. 1 ) THEN CALL interp_fcn ( & grid%ol3, & cids, cide, 1, 1, cjds, cjde, & cims, cime, 1, 1, cjms, cjme, & cips, cipe, 1, 1, cjps, cjpe, & ngrid%ol3, & nids, nide, 1, 1, njds, njde, & nims, nime, 1, 1, njms, njme, & nips, nipe, 1, 1, njps, njpe, & config_flags%shw, ngrid%imask_nostag, & .FALSE., .FALSE., & ngrid%i_parent_start, ngrid%j_parent_start, & ngrid%parent_grid_ratio, ngrid%parent_grid_ratio & ) ENDIF IF ( SIZE( grid%ol4, 1 ) * SIZE( grid%ol4, 2 ) .GT. 1 ) THEN CALL interp_fcn ( & grid%ol4, & cids, cide, 1, 1, cjds, cjde, & cims, cime, 1, 1, cjms, cjme, & cips, cipe, 1, 1, cjps, cjpe, & ngrid%ol4, & nids, nide, 1, 1, njds, njde, & nims, nime, 1, 1, njms, njme, & nips, nipe, 1, 1, njps, njpe, & config_flags%shw, ngrid%imask_nostag, & .FALSE., .FALSE., & ngrid%i_parent_start, ngrid%j_parent_start, & ngrid%parent_grid_ratio, ngrid%parent_grid_ratio & ) ENDIF IF ( SIZE( grid%f_ice_phy, 1 ) * SIZE( grid%f_ice_phy, 3 ) .GT. 1 ) THEN CALL interp_fcn ( & grid%f_ice_phy, & cids, cide, ckds, ckde, cjds, cjde, & cims, cime, ckms, ckme, cjms, cjme, & cips, cipe, ckps, MIN( (ckde-1), ckpe ), cjps, cjpe, & ngrid%f_ice_phy, & nids, nide, nkds, nkde, njds, njde, & nims, nime, nkms, nkme, njms, njme, & nips, nipe, nkps, MIN( (nkde-1), nkpe ), njps, njpe, & config_flags%shw, ngrid%imask_nostag, & .FALSE., .FALSE., & ngrid%i_parent_start, ngrid%j_parent_start, & ngrid%parent_grid_ratio, ngrid%parent_grid_ratio & ) ENDIF IF ( SIZE( grid%f_rain_phy, 1 ) * SIZE( grid%f_rain_phy, 3 ) .GT. 1 ) THEN CALL interp_fcn ( & grid%f_rain_phy, & cids, cide, ckds, ckde, cjds, cjde, & cims, cime, ckms, ckme, cjms, cjme, & cips, cipe, ckps, MIN( (ckde-1), ckpe ), cjps, cjpe, & ngrid%f_rain_phy, & nids, nide, nkds, nkde, njds, njde, & nims, nime, nkms, nkme, njms, njme, & nips, nipe, nkps, MIN( (nkde-1), nkpe ), njps, njpe, & config_flags%shw, ngrid%imask_nostag, & .FALSE., .FALSE., & ngrid%i_parent_start, ngrid%j_parent_start, & ngrid%parent_grid_ratio, ngrid%parent_grid_ratio & ) ENDIF IF ( SIZE( grid%f_rimef_phy, 1 ) * SIZE( grid%f_rimef_phy, 3 ) .GT. 1 ) THEN CALL interp_fcn ( & grid%f_rimef_phy, & cids, cide, ckds, ckde, cjds, cjde, & cims, cime, ckms, ckme, cjms, cjme, & cips, cipe, ckps, MIN( (ckde-1), ckpe ), cjps, cjpe, & ngrid%f_rimef_phy, & nids, nide, nkds, nkde, njds, njde, & nims, nime, nkms, nkme, njms, njme, & nips, nipe, nkps, MIN( (nkde-1), nkpe ), njps, njpe, & config_flags%shw, ngrid%imask_nostag, & .FALSE., .FALSE., & ngrid%i_parent_start, ngrid%j_parent_start, & ngrid%parent_grid_ratio, ngrid%parent_grid_ratio & ) ENDIF IF ( SIZE( grid%h_diabatic, 1 ) * SIZE( grid%h_diabatic, 3 ) .GT. 1 ) THEN CALL interp_fcn ( & grid%h_diabatic, & cids, cide, ckds, ckde, cjds, cjde, & cims, cime, ckms, ckme, cjms, cjme, & cips, cipe, ckps, MIN( (ckde-1), ckpe ), cjps, cjpe, & ngrid%h_diabatic, & nids, nide, nkds, nkde, njds, njde, & nims, nime, nkms, nkme, njms, njme, & nips, nipe, nkps, MIN( (nkde-1), nkpe ), njps, njpe, & config_flags%shw, ngrid%imask_nostag, & .FALSE., .FALSE., & ngrid%i_parent_start, ngrid%j_parent_start, & ngrid%parent_grid_ratio, ngrid%parent_grid_ratio & ) ENDIF IF ( SIZE( grid%msft, 1 ) * SIZE( grid%msft, 2 ) .GT. 1 ) THEN CALL interp_fcn ( & grid%msft, & cids, cide, 1, 1, cjds, cjde, & cims, cime, 1, 1, cjms, cjme, & cips, cipe, 1, 1, cjps, cjpe, & ngrid%msft, & nids, nide, 1, 1, njds, njde, & nims, nime, 1, 1, njms, njme, & nips, nipe, 1, 1, njps, njpe, & config_flags%shw, ngrid%imask_nostag, & .FALSE., .FALSE., & ngrid%i_parent_start, ngrid%j_parent_start, & ngrid%parent_grid_ratio, ngrid%parent_grid_ratio & ) ENDIF IF ( SIZE( grid%msfu, 1 ) * SIZE( grid%msfu, 2 ) .GT. 1 ) THEN CALL interp_fcn ( & grid%msfu, & cids, cide, 1, 1, cjds, cjde, & cims, cime, 1, 1, cjms, cjme, & cips, cipe, 1, 1, cjps, cjpe, & ngrid%msfu, & nids, nide, 1, 1, njds, njde, & nims, nime, 1, 1, njms, njme, & nips, nipe, 1, 1, njps, njpe, & config_flags%shw, ngrid%imask_xstag, & .TRUE., .FALSE., & ngrid%i_parent_start, ngrid%j_parent_start, & ngrid%parent_grid_ratio, ngrid%parent_grid_ratio & ) ENDIF IF ( SIZE( grid%msfv, 1 ) * SIZE( grid%msfv, 2 ) .GT. 1 ) THEN CALL interp_fcn ( & grid%msfv, & cids, cide, 1, 1, cjds, cjde, & cims, cime, 1, 1, cjms, cjme, & cips, cipe, 1, 1, cjps, cjpe, & ngrid%msfv, & nids, nide, 1, 1, njds, njde, & nims, nime, 1, 1, njms, njme, & nips, nipe, 1, 1, njps, njpe, & config_flags%shw, ngrid%imask_ystag, & .FALSE., .TRUE., & ngrid%i_parent_start, ngrid%j_parent_start, & ngrid%parent_grid_ratio, ngrid%parent_grid_ratio & ) ENDIF IF ( SIZE( grid%msftx, 1 ) * SIZE( grid%msftx, 2 ) .GT. 1 ) THEN CALL interp_fcn ( & grid%msftx, & cids, cide, 1, 1, cjds, cjde, & cims, cime, 1, 1, cjms, cjme, & cips, cipe, 1, 1, cjps, cjpe, & ngrid%msftx, & nids, nide, 1, 1, njds, njde, & nims, nime, 1, 1, njms, njme, & nips, nipe, 1, 1, njps, njpe, & config_flags%shw, ngrid%imask_nostag, & .FALSE., .FALSE., & ngrid%i_parent_start, ngrid%j_parent_start, & ngrid%parent_grid_ratio, ngrid%parent_grid_ratio & ) ENDIF IF ( SIZE( grid%msfty, 1 ) * SIZE( grid%msfty, 2 ) .GT. 1 ) THEN CALL interp_fcn ( & grid%msfty, & cids, cide, 1, 1, cjds, cjde, & cims, cime, 1, 1, cjms, cjme, & cips, cipe, 1, 1, cjps, cjpe, & ngrid%msfty, & nids, nide, 1, 1, njds, njde, & nims, nime, 1, 1, njms, njme, & nips, nipe, 1, 1, njps, njpe, & config_flags%shw, ngrid%imask_nostag, & .FALSE., .FALSE., & ngrid%i_parent_start, ngrid%j_parent_start, & ngrid%parent_grid_ratio, ngrid%parent_grid_ratio & ) ENDIF IF ( SIZE( grid%msfux, 1 ) * SIZE( grid%msfux, 2 ) .GT. 1 ) THEN CALL interp_fcn ( & grid%msfux, & cids, cide, 1, 1, cjds, cjde, & cims, cime, 1, 1, cjms, cjme, & cips, cipe, 1, 1, cjps, cjpe, & ngrid%msfux, & nids, nide, 1, 1, njds, njde, & nims, nime, 1, 1, njms, njme, & nips, nipe, 1, 1, njps, njpe, & config_flags%shw, ngrid%imask_xstag, & .TRUE., .FALSE., & ngrid%i_parent_start, ngrid%j_parent_start, & ngrid%parent_grid_ratio, ngrid%parent_grid_ratio & ) ENDIF IF ( SIZE( grid%msfuy, 1 ) * SIZE( grid%msfuy, 2 ) .GT. 1 ) THEN CALL interp_fcn ( & grid%msfuy, & cids, cide, 1, 1, cjds, cjde, & cims, cime, 1, 1, cjms, cjme, & cips, cipe, 1, 1, cjps, cjpe, & ngrid%msfuy, & nids, nide, 1, 1, njds, njde, & nims, nime, 1, 1, njms, njme, & nips, nipe, 1, 1, njps, njpe, & config_flags%shw, ngrid%imask_xstag, & .TRUE., .FALSE., & ngrid%i_parent_start, ngrid%j_parent_start, & ngrid%parent_grid_ratio, ngrid%parent_grid_ratio & ) ENDIF IF ( SIZE( grid%msfvx, 1 ) * SIZE( grid%msfvx, 2 ) .GT. 1 ) THEN CALL interp_fcn ( & grid%msfvx, & cids, cide, 1, 1, cjds, cjde, & cims, cime, 1, 1, cjms, cjme, & cips, cipe, 1, 1, cjps, cjpe, & ngrid%msfvx, & nids, nide, 1, 1, njds, njde, & nims, nime, 1, 1, njms, njme, & nips, nipe, 1, 1, njps, njpe, & config_flags%shw, ngrid%imask_ystag, & .FALSE., .TRUE., & ngrid%i_parent_start, ngrid%j_parent_start, & ngrid%parent_grid_ratio, ngrid%parent_grid_ratio & ) ENDIF IF ( SIZE( grid%msfvx_inv, 1 ) * SIZE( grid%msfvx_inv, 2 ) .GT. 1 ) THEN CALL interp_fcn ( & grid%msfvx_inv, & cids, cide, 1, 1, cjds, cjde, & cims, cime, 1, 1, cjms, cjme, & cips, cipe, 1, 1, cjps, cjpe, & ngrid%msfvx_inv, & nids, nide, 1, 1, njds, njde, & nims, nime, 1, 1, njms, njme, & nips, nipe, 1, 1, njps, njpe, & config_flags%shw, ngrid%imask_ystag, & .FALSE., .TRUE., & ngrid%i_parent_start, ngrid%j_parent_start, & ngrid%parent_grid_ratio, ngrid%parent_grid_ratio & ) ENDIF IF ( SIZE( grid%msfvy, 1 ) * SIZE( grid%msfvy, 2 ) .GT. 1 ) THEN CALL interp_fcn ( & grid%msfvy, & cids, cide, 1, 1, cjds, cjde, & cims, cime, 1, 1, cjms, cjme, & cips, cipe, 1, 1, cjps, cjpe, & ngrid%msfvy, & nids, nide, 1, 1, njds, njde, & nims, nime, 1, 1, njms, njme, & nips, nipe, 1, 1, njps, njpe, & config_flags%shw, ngrid%imask_ystag, & .FALSE., .TRUE., & ngrid%i_parent_start, ngrid%j_parent_start, & ngrid%parent_grid_ratio, ngrid%parent_grid_ratio & ) ENDIF IF ( SIZE( grid%f, 1 ) * SIZE( grid%f, 2 ) .GT. 1 ) THEN CALL interp_fcn ( & grid%f, & cids, cide, 1, 1, cjds, cjde, & cims, cime, 1, 1, cjms, cjme, & cips, cipe, 1, 1, cjps, cjpe, & ngrid%f, & nids, nide, 1, 1, njds, njde, & nims, nime, 1, 1, njms, njme, & nips, nipe, 1, 1, njps, njpe, & config_flags%shw, ngrid%imask_nostag, & .FALSE., .FALSE., & ngrid%i_parent_start, ngrid%j_parent_start, & ngrid%parent_grid_ratio, ngrid%parent_grid_ratio & ) ENDIF IF ( SIZE( grid%e, 1 ) * SIZE( grid%e, 2 ) .GT. 1 ) THEN CALL interp_fcn ( & grid%e, & cids, cide, 1, 1, cjds, cjde, & cims, cime, 1, 1, cjms, cjme, & cips, cipe, 1, 1, cjps, cjpe, & ngrid%e, & nids, nide, 1, 1, njds, njde, & nims, nime, 1, 1, njms, njme, & nips, nipe, 1, 1, njps, njpe, & config_flags%shw, ngrid%imask_nostag, & .FALSE., .FALSE., & ngrid%i_parent_start, ngrid%j_parent_start, & ngrid%parent_grid_ratio, ngrid%parent_grid_ratio & ) ENDIF IF ( SIZE( grid%sina, 1 ) * SIZE( grid%sina, 2 ) .GT. 1 ) THEN CALL interp_fcn ( & grid%sina, & cids, cide, 1, 1, cjds, cjde, & cims, cime, 1, 1, cjms, cjme, & cips, cipe, 1, 1, cjps, cjpe, & ngrid%sina, & nids, nide, 1, 1, njds, njde, & nims, nime, 1, 1, njms, njme, & nips, nipe, 1, 1, njps, njpe, & config_flags%shw, ngrid%imask_nostag, & .FALSE., .FALSE., & ngrid%i_parent_start, ngrid%j_parent_start, & ngrid%parent_grid_ratio, ngrid%parent_grid_ratio & ) ENDIF IF ( SIZE( grid%cosa, 1 ) * SIZE( grid%cosa, 2 ) .GT. 1 ) THEN CALL interp_fcn ( & grid%cosa, & cids, cide, 1, 1, cjds, cjde, & cims, cime, 1, 1, cjms, cjme, & cips, cipe, 1, 1, cjps, cjpe, & ngrid%cosa, & nids, nide, 1, 1, njds, njde, & nims, nime, 1, 1, njms, njme, & nips, nipe, 1, 1, njps, njpe, & config_flags%shw, ngrid%imask_nostag, & .FALSE., .FALSE., & ngrid%i_parent_start, ngrid%j_parent_start, & ngrid%parent_grid_ratio, ngrid%parent_grid_ratio & ) ENDIF IF ( SIZE( grid%ht, 1 ) * SIZE( grid%ht, 2 ) .GT. 1 ) THEN CALL interp_fcn ( & grid%ht, & cids, cide, 1, 1, cjds, cjde, & cims, cime, 1, 1, cjms, cjme, & cips, cipe, 1, 1, cjps, cjpe, & ngrid%ht, & nids, nide, 1, 1, njds, njde, & nims, nime, 1, 1, njms, njme, & nips, nipe, 1, 1, njps, njpe, & config_flags%shw, ngrid%imask_nostag, & .FALSE., .FALSE., & ngrid%i_parent_start, ngrid%j_parent_start, & ngrid%parent_grid_ratio, ngrid%parent_grid_ratio & ) ENDIF IF ( SIZE( grid%ht_shad, 1 ) * SIZE( grid%ht_shad, 2 ) .GT. 1 ) THEN CALL interp_fcn ( & grid%ht_shad, & cids, cide, 1, 1, cjds, cjde, & cims, cime, 1, 1, cjms, cjme, & cips, cipe, 1, 1, cjps, cjpe, & ngrid%ht_shad, & nids, nide, 1, 1, njds, njde, & nims, nime, 1, 1, njms, njme, & nips, nipe, 1, 1, njps, njpe, & config_flags%shw, ngrid%imask_nostag, & .FALSE., .FALSE., & ngrid%i_parent_start, ngrid%j_parent_start, & ngrid%parent_grid_ratio, ngrid%parent_grid_ratio & ) ENDIF IF ( SIZE( grid%tsk, 1 ) * SIZE( grid%tsk, 2 ) .GT. 1 ) THEN CALL interp_fcn ( & grid%tsk, & cids, cide, 1, 1, cjds, cjde, & cims, cime, 1, 1, cjms, cjme, & cips, cipe, 1, 1, cjps, cjpe, & ngrid%tsk, & nids, nide, 1, 1, njds, njde, & nims, nime, 1, 1, njms, njme, & nips, nipe, 1, 1, njps, njpe, & config_flags%shw, ngrid%imask_nostag, & .FALSE., .FALSE., & ngrid%i_parent_start, ngrid%j_parent_start, & ngrid%parent_grid_ratio, ngrid%parent_grid_ratio & ) ENDIF IF ( SIZE( grid%rainc, 1 ) * SIZE( grid%rainc, 2 ) .GT. 1 ) THEN CALL interp_fcn ( & grid%rainc, & cids, cide, 1, 1, cjds, cjde, & cims, cime, 1, 1, cjms, cjme, & cips, cipe, 1, 1, cjps, cjpe, & ngrid%rainc, & nids, nide, 1, 1, njds, njde, & nims, nime, 1, 1, njms, njme, & nips, nipe, 1, 1, njps, njpe, & config_flags%shw, ngrid%imask_nostag, & .FALSE., .FALSE., & ngrid%i_parent_start, ngrid%j_parent_start, & ngrid%parent_grid_ratio, ngrid%parent_grid_ratio & ) ENDIF IF ( SIZE( grid%rainsh, 1 ) * SIZE( grid%rainsh, 2 ) .GT. 1 ) THEN CALL interp_fcn ( & grid%rainsh, & cids, cide, 1, 1, cjds, cjde, & cims, cime, 1, 1, cjms, cjme, & cips, cipe, 1, 1, cjps, cjpe, & ngrid%rainsh, & nids, nide, 1, 1, njds, njde, & nims, nime, 1, 1, njms, njme, & nips, nipe, 1, 1, njps, njpe, & config_flags%shw, ngrid%imask_nostag, & .FALSE., .FALSE., & ngrid%i_parent_start, ngrid%j_parent_start, & ngrid%parent_grid_ratio, ngrid%parent_grid_ratio & ) ENDIF IF ( SIZE( grid%rainnc, 1 ) * SIZE( grid%rainnc, 2 ) .GT. 1 ) THEN CALL interp_fcn ( & grid%rainnc, & cids, cide, 1, 1, cjds, cjde, & cims, cime, 1, 1, cjms, cjme, & cips, cipe, 1, 1, cjps, cjpe, & ngrid%rainnc, & nids, nide, 1, 1, njds, njde, & nims, nime, 1, 1, njms, njme, & nips, nipe, 1, 1, njps, njpe, & config_flags%shw, ngrid%imask_nostag, & .FALSE., .FALSE., & ngrid%i_parent_start, ngrid%j_parent_start, & ngrid%parent_grid_ratio, ngrid%parent_grid_ratio & ) ENDIF IF ( SIZE( grid%i_rainc, 1 ) * SIZE( grid%i_rainc, 2 ) .GT. 1 ) THEN CALL interp_fcni ( & grid%i_rainc, & cids, cide, 1, 1, cjds, cjde, & cims, cime, 1, 1, cjms, cjme, & cips, cipe, 1, 1, cjps, cjpe, & ngrid%i_rainc, & nids, nide, 1, 1, njds, njde, & nims, nime, 1, 1, njms, njme, & nips, nipe, 1, 1, njps, njpe, & config_flags%shw, ngrid%imask_nostag, & .FALSE., .FALSE., & ngrid%i_parent_start, ngrid%j_parent_start, & ngrid%parent_grid_ratio, ngrid%parent_grid_ratio & ) ENDIF IF ( SIZE( grid%i_rainnc, 1 ) * SIZE( grid%i_rainnc, 2 ) .GT. 1 ) THEN CALL interp_fcni ( & grid%i_rainnc, & cids, cide, 1, 1, cjds, cjde, & cims, cime, 1, 1, cjms, cjme, & cips, cipe, 1, 1, cjps, cjpe, & ngrid%i_rainnc, & nids, nide, 1, 1, njds, njde, & nims, nime, 1, 1, njms, njme, & nips, nipe, 1, 1, njps, njpe, & config_flags%shw, ngrid%imask_nostag, & .FALSE., .FALSE., & ngrid%i_parent_start, ngrid%j_parent_start, & ngrid%parent_grid_ratio, ngrid%parent_grid_ratio & ) ENDIF IF ( SIZE( grid%snownc, 1 ) * SIZE( grid%snownc, 2 ) .GT. 1 ) THEN CALL interp_fcn ( & grid%snownc, & cids, cide, 1, 1, cjds, cjde, & cims, cime, 1, 1, cjms, cjme, & cips, cipe, 1, 1, cjps, cjpe, & ngrid%snownc, & nids, nide, 1, 1, njds, njde, & nims, nime, 1, 1, njms, njme, & nips, nipe, 1, 1, njps, njpe, & config_flags%shw, ngrid%imask_nostag, & .FALSE., .FALSE., & ngrid%i_parent_start, ngrid%j_parent_start, & ngrid%parent_grid_ratio, ngrid%parent_grid_ratio & ) ENDIF IF ( SIZE( grid%graupelnc, 1 ) * SIZE( grid%graupelnc, 2 ) .GT. 1 ) THEN CALL interp_fcn ( & grid%graupelnc, & cids, cide, 1, 1, cjds, cjde, & cims, cime, 1, 1, cjms, cjme, & cips, cipe, 1, 1, cjps, cjpe, & ngrid%graupelnc, & nids, nide, 1, 1, njds, njde, & nims, nime, 1, 1, njms, njme, & nips, nipe, 1, 1, njps, njpe, & config_flags%shw, ngrid%imask_nostag, & .FALSE., .FALSE., & ngrid%i_parent_start, ngrid%j_parent_start, & ngrid%parent_grid_ratio, ngrid%parent_grid_ratio & ) ENDIF IF ( SIZE( grid%hailnc, 1 ) * SIZE( grid%hailnc, 2 ) .GT. 1 ) THEN CALL interp_fcn ( & grid%hailnc, & cids, cide, 1, 1, cjds, cjde, & cims, cime, 1, 1, cjms, cjme, & cips, cipe, 1, 1, cjps, cjpe, & ngrid%hailnc, & nids, nide, 1, 1, njds, njde, & nims, nime, 1, 1, njms, njme, & nips, nipe, 1, 1, njps, njpe, & config_flags%shw, ngrid%imask_nostag, & .FALSE., .FALSE., & ngrid%i_parent_start, ngrid%j_parent_start, & ngrid%parent_grid_ratio, ngrid%parent_grid_ratio & ) ENDIF IF ( SIZE( grid%refl_10cm, 1 ) * SIZE( grid%refl_10cm, 3 ) .GT. 1 ) THEN CALL interp_fcn ( & grid%refl_10cm, & cids, cide, ckds, ckde, cjds, cjde, & cims, cime, ckms, ckme, cjms, cjme, & cips, cipe, ckps, MIN( (ckde-1), ckpe ), cjps, cjpe, & ngrid%refl_10cm, & nids, nide, nkds, nkde, njds, njde, & nims, nime, nkms, nkme, njms, njme, & nips, nipe, nkps, MIN( (nkde-1), nkpe ), njps, njpe, & config_flags%shw, ngrid%imask_nostag, & .FALSE., .FALSE., & ngrid%i_parent_start, ngrid%j_parent_start, & ngrid%parent_grid_ratio, ngrid%parent_grid_ratio & ) ENDIF IF ( SIZE( grid%rthraten, 1 ) * SIZE( grid%rthraten, 3 ) .GT. 1 ) THEN CALL interp_fcn ( & grid%rthraten, & cids, cide, ckds, ckde, cjds, cjde, & cims, cime, ckms, ckme, cjms, cjme, & cips, cipe, ckps, MIN( (ckde-1), ckpe ), cjps, cjpe, & ngrid%rthraten, & nids, nide, nkds, nkde, njds, njde, & nims, nime, nkms, nkme, njms, njme, & nips, nipe, nkps, MIN( (nkde-1), nkpe ), njps, njpe, & config_flags%shw, ngrid%imask_nostag, & .FALSE., .FALSE., & ngrid%i_parent_start, ngrid%j_parent_start, & ngrid%parent_grid_ratio, ngrid%parent_grid_ratio & ) ENDIF IF ( SIZE( grid%swdown, 1 ) * SIZE( grid%swdown, 2 ) .GT. 1 ) THEN CALL interp_fcn ( & grid%swdown, & cids, cide, 1, 1, cjds, cjde, & cims, cime, 1, 1, cjms, cjme, & cips, cipe, 1, 1, cjps, cjpe, & ngrid%swdown, & nids, nide, 1, 1, njds, njde, & nims, nime, 1, 1, njms, njme, & nips, nipe, 1, 1, njps, njpe, & config_flags%shw, ngrid%imask_nostag, & .FALSE., .FALSE., & ngrid%i_parent_start, ngrid%j_parent_start, & ngrid%parent_grid_ratio, ngrid%parent_grid_ratio & ) ENDIF IF ( SIZE( grid%gsw, 1 ) * SIZE( grid%gsw, 2 ) .GT. 1 ) THEN CALL interp_fcn ( & grid%gsw, & cids, cide, 1, 1, cjds, cjde, & cims, cime, 1, 1, cjms, cjme, & cips, cipe, 1, 1, cjps, cjpe, & ngrid%gsw, & nids, nide, 1, 1, njds, njde, & nims, nime, 1, 1, njms, njme, & nips, nipe, 1, 1, njps, njpe, & config_flags%shw, ngrid%imask_nostag, & .FALSE., .FALSE., & ngrid%i_parent_start, ngrid%j_parent_start, & ngrid%parent_grid_ratio, ngrid%parent_grid_ratio & ) ENDIF IF ( SIZE( grid%glw, 1 ) * SIZE( grid%glw, 2 ) .GT. 1 ) THEN CALL interp_fcn ( & grid%glw, & cids, cide, 1, 1, cjds, cjde, & cims, cime, 1, 1, cjms, cjme, & cips, cipe, 1, 1, cjps, cjpe, & ngrid%glw, & nids, nide, 1, 1, njds, njde, & nims, nime, 1, 1, njms, njme, & nips, nipe, 1, 1, njps, njpe, & config_flags%shw, ngrid%imask_nostag, & .FALSE., .FALSE., & ngrid%i_parent_start, ngrid%j_parent_start, & ngrid%parent_grid_ratio, ngrid%parent_grid_ratio & ) ENDIF IF ( SIZE( grid%swnorm, 1 ) * SIZE( grid%swnorm, 2 ) .GT. 1 ) THEN CALL interp_fcn ( & grid%swnorm, & cids, cide, 1, 1, cjds, cjde, & cims, cime, 1, 1, cjms, cjme, & cips, cipe, 1, 1, cjps, cjpe, & ngrid%swnorm, & nids, nide, 1, 1, njds, njde, & nims, nime, 1, 1, njms, njme, & nips, nipe, 1, 1, njps, njpe, & config_flags%shw, ngrid%imask_nostag, & .FALSE., .FALSE., & ngrid%i_parent_start, ngrid%j_parent_start, & ngrid%parent_grid_ratio, ngrid%parent_grid_ratio & ) ENDIF IF ( SIZE( grid%acswupt, 1 ) * SIZE( grid%acswupt, 2 ) .GT. 1 ) THEN CALL interp_fcn ( & grid%acswupt, & cids, cide, 1, 1, cjds, cjde, & cims, cime, 1, 1, cjms, cjme, & cips, cipe, 1, 1, cjps, cjpe, & ngrid%acswupt, & nids, nide, 1, 1, njds, njde, & nims, nime, 1, 1, njms, njme, & nips, nipe, 1, 1, njps, njpe, & config_flags%shw, ngrid%imask_nostag, & .FALSE., .FALSE., & ngrid%i_parent_start, ngrid%j_parent_start, & ngrid%parent_grid_ratio, ngrid%parent_grid_ratio & ) ENDIF IF ( SIZE( grid%acswuptc, 1 ) * SIZE( grid%acswuptc, 2 ) .GT. 1 ) THEN CALL interp_fcn ( & grid%acswuptc, & cids, cide, 1, 1, cjds, cjde, & cims, cime, 1, 1, cjms, cjme, & cips, cipe, 1, 1, cjps, cjpe, & ngrid%acswuptc, & nids, nide, 1, 1, njds, njde, & nims, nime, 1, 1, njms, njme, & nips, nipe, 1, 1, njps, njpe, & config_flags%shw, ngrid%imask_nostag, & .FALSE., .FALSE., & ngrid%i_parent_start, ngrid%j_parent_start, & ngrid%parent_grid_ratio, ngrid%parent_grid_ratio & ) ENDIF IF ( SIZE( grid%acswdnt, 1 ) * SIZE( grid%acswdnt, 2 ) .GT. 1 ) THEN CALL interp_fcn ( & grid%acswdnt, & cids, cide, 1, 1, cjds, cjde, & cims, cime, 1, 1, cjms, cjme, & cips, cipe, 1, 1, cjps, cjpe, & ngrid%acswdnt, & nids, nide, 1, 1, njds, njde, & nims, nime, 1, 1, njms, njme, & nips, nipe, 1, 1, njps, njpe, & config_flags%shw, ngrid%imask_nostag, & .FALSE., .FALSE., & ngrid%i_parent_start, ngrid%j_parent_start, & ngrid%parent_grid_ratio, ngrid%parent_grid_ratio & ) ENDIF IF ( SIZE( grid%acswdntc, 1 ) * SIZE( grid%acswdntc, 2 ) .GT. 1 ) THEN CALL interp_fcn ( & grid%acswdntc, & cids, cide, 1, 1, cjds, cjde, & cims, cime, 1, 1, cjms, cjme, & cips, cipe, 1, 1, cjps, cjpe, & ngrid%acswdntc, & nids, nide, 1, 1, njds, njde, & nims, nime, 1, 1, njms, njme, & nips, nipe, 1, 1, njps, njpe, & config_flags%shw, ngrid%imask_nostag, & .FALSE., .FALSE., & ngrid%i_parent_start, ngrid%j_parent_start, & ngrid%parent_grid_ratio, ngrid%parent_grid_ratio & ) ENDIF IF ( SIZE( grid%acswupb, 1 ) * SIZE( grid%acswupb, 2 ) .GT. 1 ) THEN CALL interp_fcn ( & grid%acswupb, & cids, cide, 1, 1, cjds, cjde, & cims, cime, 1, 1, cjms, cjme, & cips, cipe, 1, 1, cjps, cjpe, & ngrid%acswupb, & nids, nide, 1, 1, njds, njde, & nims, nime, 1, 1, njms, njme, & nips, nipe, 1, 1, njps, njpe, & config_flags%shw, ngrid%imask_nostag, & .FALSE., .FALSE., & ngrid%i_parent_start, ngrid%j_parent_start, & ngrid%parent_grid_ratio, ngrid%parent_grid_ratio & ) ENDIF IF ( SIZE( grid%acswupbc, 1 ) * SIZE( grid%acswupbc, 2 ) .GT. 1 ) THEN CALL interp_fcn ( & grid%acswupbc, & cids, cide, 1, 1, cjds, cjde, & cims, cime, 1, 1, cjms, cjme, & cips, cipe, 1, 1, cjps, cjpe, & ngrid%acswupbc, & nids, nide, 1, 1, njds, njde, & nims, nime, 1, 1, njms, njme, & nips, nipe, 1, 1, njps, njpe, & config_flags%shw, ngrid%imask_nostag, & .FALSE., .FALSE., & ngrid%i_parent_start, ngrid%j_parent_start, & ngrid%parent_grid_ratio, ngrid%parent_grid_ratio & ) ENDIF IF ( SIZE( grid%acswdnb, 1 ) * SIZE( grid%acswdnb, 2 ) .GT. 1 ) THEN CALL interp_fcn ( & grid%acswdnb, & cids, cide, 1, 1, cjds, cjde, & cims, cime, 1, 1, cjms, cjme, & cips, cipe, 1, 1, cjps, cjpe, & ngrid%acswdnb, & nids, nide, 1, 1, njds, njde, & nims, nime, 1, 1, njms, njme, & nips, nipe, 1, 1, njps, njpe, & config_flags%shw, ngrid%imask_nostag, & .FALSE., .FALSE., & ngrid%i_parent_start, ngrid%j_parent_start, & ngrid%parent_grid_ratio, ngrid%parent_grid_ratio & ) ENDIF IF ( SIZE( grid%acswdnbc, 1 ) * SIZE( grid%acswdnbc, 2 ) .GT. 1 ) THEN CALL interp_fcn ( & grid%acswdnbc, & cids, cide, 1, 1, cjds, cjde, & cims, cime, 1, 1, cjms, cjme, & cips, cipe, 1, 1, cjps, cjpe, & ngrid%acswdnbc, & nids, nide, 1, 1, njds, njde, & nims, nime, 1, 1, njms, njme, & nips, nipe, 1, 1, njps, njpe, & config_flags%shw, ngrid%imask_nostag, & .FALSE., .FALSE., & ngrid%i_parent_start, ngrid%j_parent_start, & ngrid%parent_grid_ratio, ngrid%parent_grid_ratio & ) ENDIF IF ( SIZE( grid%aclwupt, 1 ) * SIZE( grid%aclwupt, 2 ) .GT. 1 ) THEN CALL interp_fcn ( & grid%aclwupt, & cids, cide, 1, 1, cjds, cjde, & cims, cime, 1, 1, cjms, cjme, & cips, cipe, 1, 1, cjps, cjpe, & ngrid%aclwupt, & nids, nide, 1, 1, njds, njde, & nims, nime, 1, 1, njms, njme, & nips, nipe, 1, 1, njps, njpe, & config_flags%shw, ngrid%imask_nostag, & .FALSE., .FALSE., & ngrid%i_parent_start, ngrid%j_parent_start, & ngrid%parent_grid_ratio, ngrid%parent_grid_ratio & ) ENDIF IF ( SIZE( grid%aclwuptc, 1 ) * SIZE( grid%aclwuptc, 2 ) .GT. 1 ) THEN CALL interp_fcn ( & grid%aclwuptc, & cids, cide, 1, 1, cjds, cjde, & cims, cime, 1, 1, cjms, cjme, & cips, cipe, 1, 1, cjps, cjpe, & ngrid%aclwuptc, & nids, nide, 1, 1, njds, njde, & nims, nime, 1, 1, njms, njme, & nips, nipe, 1, 1, njps, njpe, & config_flags%shw, ngrid%imask_nostag, & .FALSE., .FALSE., & ngrid%i_parent_start, ngrid%j_parent_start, & ngrid%parent_grid_ratio, ngrid%parent_grid_ratio & ) ENDIF IF ( SIZE( grid%aclwdnt, 1 ) * SIZE( grid%aclwdnt, 2 ) .GT. 1 ) THEN CALL interp_fcn ( & grid%aclwdnt, & cids, cide, 1, 1, cjds, cjde, & cims, cime, 1, 1, cjms, cjme, & cips, cipe, 1, 1, cjps, cjpe, & ngrid%aclwdnt, & nids, nide, 1, 1, njds, njde, & nims, nime, 1, 1, njms, njme, & nips, nipe, 1, 1, njps, njpe, & config_flags%shw, ngrid%imask_nostag, & .FALSE., .FALSE., & ngrid%i_parent_start, ngrid%j_parent_start, & ngrid%parent_grid_ratio, ngrid%parent_grid_ratio & ) ENDIF IF ( SIZE( grid%aclwdntc, 1 ) * SIZE( grid%aclwdntc, 2 ) .GT. 1 ) THEN CALL interp_fcn ( & grid%aclwdntc, & cids, cide, 1, 1, cjds, cjde, & cims, cime, 1, 1, cjms, cjme, & cips, cipe, 1, 1, cjps, cjpe, & ngrid%aclwdntc, & nids, nide, 1, 1, njds, njde, & nims, nime, 1, 1, njms, njme, & nips, nipe, 1, 1, njps, njpe, & config_flags%shw, ngrid%imask_nostag, & .FALSE., .FALSE., & ngrid%i_parent_start, ngrid%j_parent_start, & ngrid%parent_grid_ratio, ngrid%parent_grid_ratio & ) ENDIF IF ( SIZE( grid%aclwupb, 1 ) * SIZE( grid%aclwupb, 2 ) .GT. 1 ) THEN CALL interp_fcn ( & grid%aclwupb, & cids, cide, 1, 1, cjds, cjde, & cims, cime, 1, 1, cjms, cjme, & cips, cipe, 1, 1, cjps, cjpe, & ngrid%aclwupb, & nids, nide, 1, 1, njds, njde, & nims, nime, 1, 1, njms, njme, & nips, nipe, 1, 1, njps, njpe, & config_flags%shw, ngrid%imask_nostag, & .FALSE., .FALSE., & ngrid%i_parent_start, ngrid%j_parent_start, & ngrid%parent_grid_ratio, ngrid%parent_grid_ratio & ) ENDIF IF ( SIZE( grid%aclwupbc, 1 ) * SIZE( grid%aclwupbc, 2 ) .GT. 1 ) THEN CALL interp_fcn ( & grid%aclwupbc, & cids, cide, 1, 1, cjds, cjde, & cims, cime, 1, 1, cjms, cjme, & cips, cipe, 1, 1, cjps, cjpe, & ngrid%aclwupbc, & nids, nide, 1, 1, njds, njde, & nims, nime, 1, 1, njms, njme, & nips, nipe, 1, 1, njps, njpe, & config_flags%shw, ngrid%imask_nostag, & .FALSE., .FALSE., & ngrid%i_parent_start, ngrid%j_parent_start, & ngrid%parent_grid_ratio, ngrid%parent_grid_ratio & ) ENDIF IF ( SIZE( grid%aclwdnb, 1 ) * SIZE( grid%aclwdnb, 2 ) .GT. 1 ) THEN CALL interp_fcn ( & grid%aclwdnb, & cids, cide, 1, 1, cjds, cjde, & cims, cime, 1, 1, cjms, cjme, & cips, cipe, 1, 1, cjps, cjpe, & ngrid%aclwdnb, & nids, nide, 1, 1, njds, njde, & nims, nime, 1, 1, njms, njme, & nips, nipe, 1, 1, njps, njpe, & config_flags%shw, ngrid%imask_nostag, & .FALSE., .FALSE., & ngrid%i_parent_start, ngrid%j_parent_start, & ngrid%parent_grid_ratio, ngrid%parent_grid_ratio & ) ENDIF IF ( SIZE( grid%aclwdnbc, 1 ) * SIZE( grid%aclwdnbc, 2 ) .GT. 1 ) THEN CALL interp_fcn ( & grid%aclwdnbc, & cids, cide, 1, 1, cjds, cjde, & cims, cime, 1, 1, cjms, cjme, & cips, cipe, 1, 1, cjps, cjpe, & ngrid%aclwdnbc, & nids, nide, 1, 1, njds, njde, & nims, nime, 1, 1, njms, njme, & nips, nipe, 1, 1, njps, njpe, & config_flags%shw, ngrid%imask_nostag, & .FALSE., .FALSE., & ngrid%i_parent_start, ngrid%j_parent_start, & ngrid%parent_grid_ratio, ngrid%parent_grid_ratio & ) ENDIF IF ( SIZE( grid%i_acswupt, 1 ) * SIZE( grid%i_acswupt, 2 ) .GT. 1 ) THEN CALL interp_fcni ( & grid%i_acswupt, & cids, cide, 1, 1, cjds, cjde, & cims, cime, 1, 1, cjms, cjme, & cips, cipe, 1, 1, cjps, cjpe, & ngrid%i_acswupt, & nids, nide, 1, 1, njds, njde, & nims, nime, 1, 1, njms, njme, & nips, nipe, 1, 1, njps, njpe, & config_flags%shw, ngrid%imask_nostag, & .FALSE., .FALSE., & ngrid%i_parent_start, ngrid%j_parent_start, & ngrid%parent_grid_ratio, ngrid%parent_grid_ratio & ) ENDIF IF ( SIZE( grid%i_acswuptc, 1 ) * SIZE( grid%i_acswuptc, 2 ) .GT. 1 ) THEN CALL interp_fcni ( & grid%i_acswuptc, & cids, cide, 1, 1, cjds, cjde, & cims, cime, 1, 1, cjms, cjme, & cips, cipe, 1, 1, cjps, cjpe, & ngrid%i_acswuptc, & nids, nide, 1, 1, njds, njde, & nims, nime, 1, 1, njms, njme, & nips, nipe, 1, 1, njps, njpe, & config_flags%shw, ngrid%imask_nostag, & .FALSE., .FALSE., & ngrid%i_parent_start, ngrid%j_parent_start, & ngrid%parent_grid_ratio, ngrid%parent_grid_ratio & ) ENDIF IF ( SIZE( grid%i_acswdnt, 1 ) * SIZE( grid%i_acswdnt, 2 ) .GT. 1 ) THEN CALL interp_fcni ( & grid%i_acswdnt, & cids, cide, 1, 1, cjds, cjde, & cims, cime, 1, 1, cjms, cjme, & cips, cipe, 1, 1, cjps, cjpe, & ngrid%i_acswdnt, & nids, nide, 1, 1, njds, njde, & nims, nime, 1, 1, njms, njme, & nips, nipe, 1, 1, njps, njpe, & config_flags%shw, ngrid%imask_nostag, & .FALSE., .FALSE., & ngrid%i_parent_start, ngrid%j_parent_start, & ngrid%parent_grid_ratio, ngrid%parent_grid_ratio & ) ENDIF IF ( SIZE( grid%i_acswdntc, 1 ) * SIZE( grid%i_acswdntc, 2 ) .GT. 1 ) THEN CALL interp_fcni ( & grid%i_acswdntc, & cids, cide, 1, 1, cjds, cjde, & cims, cime, 1, 1, cjms, cjme, & cips, cipe, 1, 1, cjps, cjpe, & ngrid%i_acswdntc, & nids, nide, 1, 1, njds, njde, & nims, nime, 1, 1, njms, njme, & nips, nipe, 1, 1, njps, njpe, & config_flags%shw, ngrid%imask_nostag, & .FALSE., .FALSE., & ngrid%i_parent_start, ngrid%j_parent_start, & ngrid%parent_grid_ratio, ngrid%parent_grid_ratio & ) ENDIF IF ( SIZE( grid%i_acswupb, 1 ) * SIZE( grid%i_acswupb, 2 ) .GT. 1 ) THEN CALL interp_fcni ( & grid%i_acswupb, & cids, cide, 1, 1, cjds, cjde, & cims, cime, 1, 1, cjms, cjme, & cips, cipe, 1, 1, cjps, cjpe, & ngrid%i_acswupb, & nids, nide, 1, 1, njds, njde, & nims, nime, 1, 1, njms, njme, & nips, nipe, 1, 1, njps, njpe, & config_flags%shw, ngrid%imask_nostag, & .FALSE., .FALSE., & ngrid%i_parent_start, ngrid%j_parent_start, & ngrid%parent_grid_ratio, ngrid%parent_grid_ratio & ) ENDIF IF ( SIZE( grid%i_acswupbc, 1 ) * SIZE( grid%i_acswupbc, 2 ) .GT. 1 ) THEN CALL interp_fcni ( & grid%i_acswupbc, & cids, cide, 1, 1, cjds, cjde, & cims, cime, 1, 1, cjms, cjme, & cips, cipe, 1, 1, cjps, cjpe, & ngrid%i_acswupbc, & nids, nide, 1, 1, njds, njde, & nims, nime, 1, 1, njms, njme, & nips, nipe, 1, 1, njps, njpe, & config_flags%shw, ngrid%imask_nostag, & .FALSE., .FALSE., & ngrid%i_parent_start, ngrid%j_parent_start, & ngrid%parent_grid_ratio, ngrid%parent_grid_ratio & ) ENDIF IF ( SIZE( grid%i_acswdnb, 1 ) * SIZE( grid%i_acswdnb, 2 ) .GT. 1 ) THEN CALL interp_fcni ( & grid%i_acswdnb, & cids, cide, 1, 1, cjds, cjde, & cims, cime, 1, 1, cjms, cjme, & cips, cipe, 1, 1, cjps, cjpe, & ngrid%i_acswdnb, & nids, nide, 1, 1, njds, njde, & nims, nime, 1, 1, njms, njme, & nips, nipe, 1, 1, njps, njpe, & config_flags%shw, ngrid%imask_nostag, & .FALSE., .FALSE., & ngrid%i_parent_start, ngrid%j_parent_start, & ngrid%parent_grid_ratio, ngrid%parent_grid_ratio & ) ENDIF IF ( SIZE( grid%i_acswdnbc, 1 ) * SIZE( grid%i_acswdnbc, 2 ) .GT. 1 ) THEN CALL interp_fcni ( & grid%i_acswdnbc, & cids, cide, 1, 1, cjds, cjde, & cims, cime, 1, 1, cjms, cjme, & cips, cipe, 1, 1, cjps, cjpe, & ngrid%i_acswdnbc, & nids, nide, 1, 1, njds, njde, & nims, nime, 1, 1, njms, njme, & nips, nipe, 1, 1, njps, njpe, & config_flags%shw, ngrid%imask_nostag, & .FALSE., .FALSE., & ngrid%i_parent_start, ngrid%j_parent_start, & ngrid%parent_grid_ratio, ngrid%parent_grid_ratio & ) ENDIF IF ( SIZE( grid%i_aclwupt, 1 ) * SIZE( grid%i_aclwupt, 2 ) .GT. 1 ) THEN CALL interp_fcni ( & grid%i_aclwupt, & cids, cide, 1, 1, cjds, cjde, & cims, cime, 1, 1, cjms, cjme, & cips, cipe, 1, 1, cjps, cjpe, & ngrid%i_aclwupt, & nids, nide, 1, 1, njds, njde, & nims, nime, 1, 1, njms, njme, & nips, nipe, 1, 1, njps, njpe, & config_flags%shw, ngrid%imask_nostag, & .FALSE., .FALSE., & ngrid%i_parent_start, ngrid%j_parent_start, & ngrid%parent_grid_ratio, ngrid%parent_grid_ratio & ) ENDIF IF ( SIZE( grid%i_aclwuptc, 1 ) * SIZE( grid%i_aclwuptc, 2 ) .GT. 1 ) THEN CALL interp_fcni ( & grid%i_aclwuptc, & cids, cide, 1, 1, cjds, cjde, & cims, cime, 1, 1, cjms, cjme, & cips, cipe, 1, 1, cjps, cjpe, & ngrid%i_aclwuptc, & nids, nide, 1, 1, njds, njde, & nims, nime, 1, 1, njms, njme, & nips, nipe, 1, 1, njps, njpe, & config_flags%shw, ngrid%imask_nostag, & .FALSE., .FALSE., & ngrid%i_parent_start, ngrid%j_parent_start, & ngrid%parent_grid_ratio, ngrid%parent_grid_ratio & ) ENDIF IF ( SIZE( grid%i_aclwdnt, 1 ) * SIZE( grid%i_aclwdnt, 2 ) .GT. 1 ) THEN CALL interp_fcni ( & grid%i_aclwdnt, & cids, cide, 1, 1, cjds, cjde, & cims, cime, 1, 1, cjms, cjme, & cips, cipe, 1, 1, cjps, cjpe, & ngrid%i_aclwdnt, & nids, nide, 1, 1, njds, njde, & nims, nime, 1, 1, njms, njme, & nips, nipe, 1, 1, njps, njpe, & config_flags%shw, ngrid%imask_nostag, & .FALSE., .FALSE., & ngrid%i_parent_start, ngrid%j_parent_start, & ngrid%parent_grid_ratio, ngrid%parent_grid_ratio & ) ENDIF IF ( SIZE( grid%i_aclwdntc, 1 ) * SIZE( grid%i_aclwdntc, 2 ) .GT. 1 ) THEN CALL interp_fcni ( & grid%i_aclwdntc, & cids, cide, 1, 1, cjds, cjde, & cims, cime, 1, 1, cjms, cjme, & cips, cipe, 1, 1, cjps, cjpe, & ngrid%i_aclwdntc, & nids, nide, 1, 1, njds, njde, & nims, nime, 1, 1, njms, njme, & nips, nipe, 1, 1, njps, njpe, & config_flags%shw, ngrid%imask_nostag, & .FALSE., .FALSE., & ngrid%i_parent_start, ngrid%j_parent_start, & ngrid%parent_grid_ratio, ngrid%parent_grid_ratio & ) ENDIF IF ( SIZE( grid%i_aclwupb, 1 ) * SIZE( grid%i_aclwupb, 2 ) .GT. 1 ) THEN CALL interp_fcni ( & grid%i_aclwupb, & cids, cide, 1, 1, cjds, cjde, & cims, cime, 1, 1, cjms, cjme, & cips, cipe, 1, 1, cjps, cjpe, & ngrid%i_aclwupb, & nids, nide, 1, 1, njds, njde, & nims, nime, 1, 1, njms, njme, & nips, nipe, 1, 1, njps, njpe, & config_flags%shw, ngrid%imask_nostag, & .FALSE., .FALSE., & ngrid%i_parent_start, ngrid%j_parent_start, & ngrid%parent_grid_ratio, ngrid%parent_grid_ratio & ) ENDIF IF ( SIZE( grid%i_aclwupbc, 1 ) * SIZE( grid%i_aclwupbc, 2 ) .GT. 1 ) THEN CALL interp_fcni ( & grid%i_aclwupbc, & cids, cide, 1, 1, cjds, cjde, & cims, cime, 1, 1, cjms, cjme, & cips, cipe, 1, 1, cjps, cjpe, & ngrid%i_aclwupbc, & nids, nide, 1, 1, njds, njde, & nims, nime, 1, 1, njms, njme, & nips, nipe, 1, 1, njps, njpe, & config_flags%shw, ngrid%imask_nostag, & .FALSE., .FALSE., & ngrid%i_parent_start, ngrid%j_parent_start, & ngrid%parent_grid_ratio, ngrid%parent_grid_ratio & ) ENDIF IF ( SIZE( grid%i_aclwdnb, 1 ) * SIZE( grid%i_aclwdnb, 2 ) .GT. 1 ) THEN CALL interp_fcni ( & grid%i_aclwdnb, & cids, cide, 1, 1, cjds, cjde, & cims, cime, 1, 1, cjms, cjme, & cips, cipe, 1, 1, cjps, cjpe, & ngrid%i_aclwdnb, & nids, nide, 1, 1, njds, njde, & nims, nime, 1, 1, njms, njme, & nips, nipe, 1, 1, njps, njpe, & config_flags%shw, ngrid%imask_nostag, & .FALSE., .FALSE., & ngrid%i_parent_start, ngrid%j_parent_start, & ngrid%parent_grid_ratio, ngrid%parent_grid_ratio & ) ENDIF IF ( SIZE( grid%i_aclwdnbc, 1 ) * SIZE( grid%i_aclwdnbc, 2 ) .GT. 1 ) THEN CALL interp_fcni ( & grid%i_aclwdnbc, & cids, cide, 1, 1, cjds, cjde, & cims, cime, 1, 1, cjms, cjme, & cips, cipe, 1, 1, cjps, cjpe, & ngrid%i_aclwdnbc, & nids, nide, 1, 1, njds, njde, & nims, nime, 1, 1, njms, njme, & nips, nipe, 1, 1, njps, njpe, & config_flags%shw, ngrid%imask_nostag, & .FALSE., .FALSE., & ngrid%i_parent_start, ngrid%j_parent_start, & ngrid%parent_grid_ratio, ngrid%parent_grid_ratio & ) ENDIF IF ( SIZE( grid%swupt, 1 ) * SIZE( grid%swupt, 2 ) .GT. 1 ) THEN CALL interp_fcn ( & grid%swupt, & cids, cide, 1, 1, cjds, cjde, & cims, cime, 1, 1, cjms, cjme, & cips, cipe, 1, 1, cjps, cjpe, & ngrid%swupt, & nids, nide, 1, 1, njds, njde, & nims, nime, 1, 1, njms, njme, & nips, nipe, 1, 1, njps, njpe, & config_flags%shw, ngrid%imask_nostag, & .FALSE., .FALSE., & ngrid%i_parent_start, ngrid%j_parent_start, & ngrid%parent_grid_ratio, ngrid%parent_grid_ratio & ) ENDIF IF ( SIZE( grid%swuptc, 1 ) * SIZE( grid%swuptc, 2 ) .GT. 1 ) THEN CALL interp_fcn ( & grid%swuptc, & cids, cide, 1, 1, cjds, cjde, & cims, cime, 1, 1, cjms, cjme, & cips, cipe, 1, 1, cjps, cjpe, & ngrid%swuptc, & nids, nide, 1, 1, njds, njde, & nims, nime, 1, 1, njms, njme, & nips, nipe, 1, 1, njps, njpe, & config_flags%shw, ngrid%imask_nostag, & .FALSE., .FALSE., & ngrid%i_parent_start, ngrid%j_parent_start, & ngrid%parent_grid_ratio, ngrid%parent_grid_ratio & ) ENDIF IF ( SIZE( grid%swdnt, 1 ) * SIZE( grid%swdnt, 2 ) .GT. 1 ) THEN CALL interp_fcn ( & grid%swdnt, & cids, cide, 1, 1, cjds, cjde, & cims, cime, 1, 1, cjms, cjme, & cips, cipe, 1, 1, cjps, cjpe, & ngrid%swdnt, & nids, nide, 1, 1, njds, njde, & nims, nime, 1, 1, njms, njme, & nips, nipe, 1, 1, njps, njpe, & config_flags%shw, ngrid%imask_nostag, & .FALSE., .FALSE., & ngrid%i_parent_start, ngrid%j_parent_start, & ngrid%parent_grid_ratio, ngrid%parent_grid_ratio & ) ENDIF IF ( SIZE( grid%swdntc, 1 ) * SIZE( grid%swdntc, 2 ) .GT. 1 ) THEN CALL interp_fcn ( & grid%swdntc, & cids, cide, 1, 1, cjds, cjde, & cims, cime, 1, 1, cjms, cjme, & cips, cipe, 1, 1, cjps, cjpe, & ngrid%swdntc, & nids, nide, 1, 1, njds, njde, & nims, nime, 1, 1, njms, njme, & nips, nipe, 1, 1, njps, njpe, & config_flags%shw, ngrid%imask_nostag, & .FALSE., .FALSE., & ngrid%i_parent_start, ngrid%j_parent_start, & ngrid%parent_grid_ratio, ngrid%parent_grid_ratio & ) ENDIF IF ( SIZE( grid%swupb, 1 ) * SIZE( grid%swupb, 2 ) .GT. 1 ) THEN CALL interp_fcn ( & grid%swupb, & cids, cide, 1, 1, cjds, cjde, & cims, cime, 1, 1, cjms, cjme, & cips, cipe, 1, 1, cjps, cjpe, & ngrid%swupb, & nids, nide, 1, 1, njds, njde, & nims, nime, 1, 1, njms, njme, & nips, nipe, 1, 1, njps, njpe, & config_flags%shw, ngrid%imask_nostag, & .FALSE., .FALSE., & ngrid%i_parent_start, ngrid%j_parent_start, & ngrid%parent_grid_ratio, ngrid%parent_grid_ratio & ) ENDIF IF ( SIZE( grid%swupbc, 1 ) * SIZE( grid%swupbc, 2 ) .GT. 1 ) THEN CALL interp_fcn ( & grid%swupbc, & cids, cide, 1, 1, cjds, cjde, & cims, cime, 1, 1, cjms, cjme, & cips, cipe, 1, 1, cjps, cjpe, & ngrid%swupbc, & nids, nide, 1, 1, njds, njde, & nims, nime, 1, 1, njms, njme, & nips, nipe, 1, 1, njps, njpe, & config_flags%shw, ngrid%imask_nostag, & .FALSE., .FALSE., & ngrid%i_parent_start, ngrid%j_parent_start, & ngrid%parent_grid_ratio, ngrid%parent_grid_ratio & ) ENDIF IF ( SIZE( grid%swdnb, 1 ) * SIZE( grid%swdnb, 2 ) .GT. 1 ) THEN CALL interp_fcn ( & grid%swdnb, & cids, cide, 1, 1, cjds, cjde, & cims, cime, 1, 1, cjms, cjme, & cips, cipe, 1, 1, cjps, cjpe, & ngrid%swdnb, & nids, nide, 1, 1, njds, njde, & nims, nime, 1, 1, njms, njme, & nips, nipe, 1, 1, njps, njpe, & config_flags%shw, ngrid%imask_nostag, & .FALSE., .FALSE., & ngrid%i_parent_start, ngrid%j_parent_start, & ngrid%parent_grid_ratio, ngrid%parent_grid_ratio & ) ENDIF IF ( SIZE( grid%swdnbc, 1 ) * SIZE( grid%swdnbc, 2 ) .GT. 1 ) THEN CALL interp_fcn ( & grid%swdnbc, & cids, cide, 1, 1, cjds, cjde, & cims, cime, 1, 1, cjms, cjme, & cips, cipe, 1, 1, cjps, cjpe, & ngrid%swdnbc, & nids, nide, 1, 1, njds, njde, & nims, nime, 1, 1, njms, njme, & nips, nipe, 1, 1, njps, njpe, & config_flags%shw, ngrid%imask_nostag, & .FALSE., .FALSE., & ngrid%i_parent_start, ngrid%j_parent_start, & ngrid%parent_grid_ratio, ngrid%parent_grid_ratio & ) ENDIF IF ( SIZE( grid%lwupt, 1 ) * SIZE( grid%lwupt, 2 ) .GT. 1 ) THEN CALL interp_fcn ( & grid%lwupt, & cids, cide, 1, 1, cjds, cjde, & cims, cime, 1, 1, cjms, cjme, & cips, cipe, 1, 1, cjps, cjpe, & ngrid%lwupt, & nids, nide, 1, 1, njds, njde, & nims, nime, 1, 1, njms, njme, & nips, nipe, 1, 1, njps, njpe, & config_flags%shw, ngrid%imask_nostag, & .FALSE., .FALSE., & ngrid%i_parent_start, ngrid%j_parent_start, & ngrid%parent_grid_ratio, ngrid%parent_grid_ratio & ) ENDIF IF ( SIZE( grid%lwuptc, 1 ) * SIZE( grid%lwuptc, 2 ) .GT. 1 ) THEN CALL interp_fcn ( & grid%lwuptc, & cids, cide, 1, 1, cjds, cjde, & cims, cime, 1, 1, cjms, cjme, & cips, cipe, 1, 1, cjps, cjpe, & ngrid%lwuptc, & nids, nide, 1, 1, njds, njde, & nims, nime, 1, 1, njms, njme, & nips, nipe, 1, 1, njps, njpe, & config_flags%shw, ngrid%imask_nostag, & .FALSE., .FALSE., & ngrid%i_parent_start, ngrid%j_parent_start, & ngrid%parent_grid_ratio, ngrid%parent_grid_ratio & ) ENDIF IF ( SIZE( grid%lwdnt, 1 ) * SIZE( grid%lwdnt, 2 ) .GT. 1 ) THEN CALL interp_fcn ( & grid%lwdnt, & cids, cide, 1, 1, cjds, cjde, & cims, cime, 1, 1, cjms, cjme, & cips, cipe, 1, 1, cjps, cjpe, & ngrid%lwdnt, & nids, nide, 1, 1, njds, njde, & nims, nime, 1, 1, njms, njme, & nips, nipe, 1, 1, njps, njpe, & config_flags%shw, ngrid%imask_nostag, & .FALSE., .FALSE., & ngrid%i_parent_start, ngrid%j_parent_start, & ngrid%parent_grid_ratio, ngrid%parent_grid_ratio & ) ENDIF IF ( SIZE( grid%lwdntc, 1 ) * SIZE( grid%lwdntc, 2 ) .GT. 1 ) THEN CALL interp_fcn ( & grid%lwdntc, & cids, cide, 1, 1, cjds, cjde, & cims, cime, 1, 1, cjms, cjme, & cips, cipe, 1, 1, cjps, cjpe, & ngrid%lwdntc, & nids, nide, 1, 1, njds, njde, & nims, nime, 1, 1, njms, njme, & nips, nipe, 1, 1, njps, njpe, & config_flags%shw, ngrid%imask_nostag, & .FALSE., .FALSE., & ngrid%i_parent_start, ngrid%j_parent_start, & ngrid%parent_grid_ratio, ngrid%parent_grid_ratio & ) ENDIF IF ( SIZE( grid%lwupb, 1 ) * SIZE( grid%lwupb, 2 ) .GT. 1 ) THEN CALL interp_fcn ( & grid%lwupb, & cids, cide, 1, 1, cjds, cjde, & cims, cime, 1, 1, cjms, cjme, & cips, cipe, 1, 1, cjps, cjpe, & ngrid%lwupb, & nids, nide, 1, 1, njds, njde, & nims, nime, 1, 1, njms, njme, & nips, nipe, 1, 1, njps, njpe, & config_flags%shw, ngrid%imask_nostag, & .FALSE., .FALSE., & ngrid%i_parent_start, ngrid%j_parent_start, & ngrid%parent_grid_ratio, ngrid%parent_grid_ratio & ) ENDIF IF ( SIZE( grid%lwupbc, 1 ) * SIZE( grid%lwupbc, 2 ) .GT. 1 ) THEN CALL interp_fcn ( & grid%lwupbc, & cids, cide, 1, 1, cjds, cjde, & cims, cime, 1, 1, cjms, cjme, & cips, cipe, 1, 1, cjps, cjpe, & ngrid%lwupbc, & nids, nide, 1, 1, njds, njde, & nims, nime, 1, 1, njms, njme, & nips, nipe, 1, 1, njps, njpe, & config_flags%shw, ngrid%imask_nostag, & .FALSE., .FALSE., & ngrid%i_parent_start, ngrid%j_parent_start, & ngrid%parent_grid_ratio, ngrid%parent_grid_ratio & ) ENDIF IF ( SIZE( grid%lwdnb, 1 ) * SIZE( grid%lwdnb, 2 ) .GT. 1 ) THEN CALL interp_fcn ( & grid%lwdnb, & cids, cide, 1, 1, cjds, cjde, & cims, cime, 1, 1, cjms, cjme, & cips, cipe, 1, 1, cjps, cjpe, & ngrid%lwdnb, & nids, nide, 1, 1, njds, njde, & nims, nime, 1, 1, njms, njme, & nips, nipe, 1, 1, njps, njpe, & config_flags%shw, ngrid%imask_nostag, & .FALSE., .FALSE., & ngrid%i_parent_start, ngrid%j_parent_start, & ngrid%parent_grid_ratio, ngrid%parent_grid_ratio & ) ENDIF IF ( SIZE( grid%lwdnbc, 1 ) * SIZE( grid%lwdnbc, 2 ) .GT. 1 ) THEN CALL interp_fcn ( & grid%lwdnbc, & cids, cide, 1, 1, cjds, cjde, & cims, cime, 1, 1, cjms, cjme, & cips, cipe, 1, 1, cjps, cjpe, & ngrid%lwdnbc, & nids, nide, 1, 1, njds, njde, & nims, nime, 1, 1, njms, njme, & nips, nipe, 1, 1, njps, njpe, & config_flags%shw, ngrid%imask_nostag, & .FALSE., .FALSE., & ngrid%i_parent_start, ngrid%j_parent_start, & ngrid%parent_grid_ratio, ngrid%parent_grid_ratio & ) ENDIF IF ( SIZE( grid%xlat, 1 ) * SIZE( grid%xlat, 2 ) .GT. 1 ) THEN CALL interp_fcn ( & grid%xlat, & cids, cide, 1, 1, cjds, cjde, & cims, cime, 1, 1, cjms, cjme, & cips, cipe, 1, 1, cjps, cjpe, & ngrid%xlat, & nids, nide, 1, 1, njds, njde, & nims, nime, 1, 1, njms, njme, & nips, nipe, 1, 1, njps, njpe, & config_flags%shw, ngrid%imask_nostag, & .FALSE., .FALSE., & ngrid%i_parent_start, ngrid%j_parent_start, & ngrid%parent_grid_ratio, ngrid%parent_grid_ratio & ) ENDIF IF ( SIZE( grid%xlong, 1 ) * SIZE( grid%xlong, 2 ) .GT. 1 ) THEN CALL interp_fcn ( & grid%xlong, & cids, cide, 1, 1, cjds, cjde, & cims, cime, 1, 1, cjms, cjme, & cips, cipe, 1, 1, cjps, cjpe, & ngrid%xlong, & nids, nide, 1, 1, njds, njde, & nims, nime, 1, 1, njms, njme, & nips, nipe, 1, 1, njps, njpe, & config_flags%shw, ngrid%imask_nostag, & .FALSE., .FALSE., & ngrid%i_parent_start, ngrid%j_parent_start, & ngrid%parent_grid_ratio, ngrid%parent_grid_ratio & ) ENDIF IF ( SIZE( grid%xlat_u, 1 ) * SIZE( grid%xlat_u, 2 ) .GT. 1 ) THEN CALL interp_fcn ( & grid%xlat_u, & cids, cide, 1, 1, cjds, cjde, & cims, cime, 1, 1, cjms, cjme, & cips, cipe, 1, 1, cjps, cjpe, & ngrid%xlat_u, & nids, nide, 1, 1, njds, njde, & nims, nime, 1, 1, njms, njme, & nips, nipe, 1, 1, njps, njpe, & config_flags%shw, ngrid%imask_xstag, & .TRUE., .FALSE., & ngrid%i_parent_start, ngrid%j_parent_start, & ngrid%parent_grid_ratio, ngrid%parent_grid_ratio & ) ENDIF IF ( SIZE( grid%xlong_u, 1 ) * SIZE( grid%xlong_u, 2 ) .GT. 1 ) THEN CALL interp_fcn ( & grid%xlong_u, & cids, cide, 1, 1, cjds, cjde, & cims, cime, 1, 1, cjms, cjme, & cips, cipe, 1, 1, cjps, cjpe, & ngrid%xlong_u, & nids, nide, 1, 1, njds, njde, & nims, nime, 1, 1, njms, njme, & nips, nipe, 1, 1, njps, njpe, & config_flags%shw, ngrid%imask_xstag, & .TRUE., .FALSE., & ngrid%i_parent_start, ngrid%j_parent_start, & ngrid%parent_grid_ratio, ngrid%parent_grid_ratio & ) ENDIF IF ( SIZE( grid%xlat_v, 1 ) * SIZE( grid%xlat_v, 2 ) .GT. 1 ) THEN CALL interp_fcn ( & grid%xlat_v, & cids, cide, 1, 1, cjds, cjde, & cims, cime, 1, 1, cjms, cjme, & cips, cipe, 1, 1, cjps, cjpe, & ngrid%xlat_v, & nids, nide, 1, 1, njds, njde, & nims, nime, 1, 1, njms, njme, & nips, nipe, 1, 1, njps, njpe, & config_flags%shw, ngrid%imask_ystag, & .FALSE., .TRUE., & ngrid%i_parent_start, ngrid%j_parent_start, & ngrid%parent_grid_ratio, ngrid%parent_grid_ratio & ) ENDIF IF ( SIZE( grid%xlong_v, 1 ) * SIZE( grid%xlong_v, 2 ) .GT. 1 ) THEN CALL interp_fcn ( & grid%xlong_v, & cids, cide, 1, 1, cjds, cjde, & cims, cime, 1, 1, cjms, cjme, & cips, cipe, 1, 1, cjps, cjpe, & ngrid%xlong_v, & nids, nide, 1, 1, njds, njde, & nims, nime, 1, 1, njms, njme, & nips, nipe, 1, 1, njps, njpe, & config_flags%shw, ngrid%imask_ystag, & .FALSE., .TRUE., & ngrid%i_parent_start, ngrid%j_parent_start, & ngrid%parent_grid_ratio, ngrid%parent_grid_ratio & ) ENDIF IF ( SIZE( grid%clat, 1 ) * SIZE( grid%clat, 2 ) .GT. 1 ) THEN CALL interp_fcn ( & grid%clat, & cids, cide, 1, 1, cjds, cjde, & cims, cime, 1, 1, cjms, cjme, & cips, cipe, 1, 1, cjps, cjpe, & ngrid%clat, & nids, nide, 1, 1, njds, njde, & nims, nime, 1, 1, njms, njme, & nips, nipe, 1, 1, njps, njpe, & config_flags%shw, ngrid%imask_nostag, & .FALSE., .FALSE., & ngrid%i_parent_start, ngrid%j_parent_start, & ngrid%parent_grid_ratio, ngrid%parent_grid_ratio & ) ENDIF IF ( .TRUE. ) THEN CALL interp_mask_land_field ( & ( SIZE( grid%isnowxy , 1 )*SIZE( grid%isnowxy , 2 ) .GT. 1 ), & grid%isnowxy, & cids, cide, 1, 1, cjds, cjde, & cims, cime, 1, 1, cjms, cjme, & cips, cipe, 1, 1, cjps, cjpe, & ngrid%isnowxy, & nids, nide, 1, 1, njds, njde, & nims, nime, 1, 1, njms, njme, & nips, nipe, 1, 1, njps, njpe, & config_flags%shw, ngrid%imask_nostag, & .FALSE., .FALSE., & ngrid%i_parent_start, ngrid%j_parent_start, & ngrid%parent_grid_ratio, ngrid%parent_grid_ratio & ,grid%lu_index,ngrid%lu_index & ) ENDIF IF ( .TRUE. ) THEN CALL interp_mask_land_field ( & ( SIZE( grid%tvxy , 1 )*SIZE( grid%tvxy , 2 ) .GT. 1 ), & grid%tvxy, & cids, cide, 1, 1, cjds, cjde, & cims, cime, 1, 1, cjms, cjme, & cips, cipe, 1, 1, cjps, cjpe, & ngrid%tvxy, & nids, nide, 1, 1, njds, njde, & nims, nime, 1, 1, njms, njme, & nips, nipe, 1, 1, njps, njpe, & config_flags%shw, ngrid%imask_nostag, & .FALSE., .FALSE., & ngrid%i_parent_start, ngrid%j_parent_start, & ngrid%parent_grid_ratio, ngrid%parent_grid_ratio & ,grid%lu_index,ngrid%lu_index & ) ENDIF IF ( .TRUE. ) THEN CALL interp_mask_land_field ( & ( SIZE( grid%tgxy , 1 )*SIZE( grid%tgxy , 2 ) .GT. 1 ), & grid%tgxy, & cids, cide, 1, 1, cjds, cjde, & cims, cime, 1, 1, cjms, cjme, & cips, cipe, 1, 1, cjps, cjpe, & ngrid%tgxy, & nids, nide, 1, 1, njds, njde, & nims, nime, 1, 1, njms, njme, & nips, nipe, 1, 1, njps, njpe, & config_flags%shw, ngrid%imask_nostag, & .FALSE., .FALSE., & ngrid%i_parent_start, ngrid%j_parent_start, & ngrid%parent_grid_ratio, ngrid%parent_grid_ratio & ,grid%lu_index,ngrid%lu_index & ) ENDIF IF ( .TRUE. ) THEN CALL interp_mask_land_field ( & ( SIZE( grid%canliqxy , 1 )*SIZE( grid%canliqxy , 2 ) .GT. 1 ), & grid%canliqxy, & cids, cide, 1, 1, cjds, cjde, & cims, cime, 1, 1, cjms, cjme, & cips, cipe, 1, 1, cjps, cjpe, & ngrid%canliqxy, & nids, nide, 1, 1, njds, njde, & nims, nime, 1, 1, njms, njme, & nips, nipe, 1, 1, njps, njpe, & config_flags%shw, ngrid%imask_nostag, & .FALSE., .FALSE., & ngrid%i_parent_start, ngrid%j_parent_start, & ngrid%parent_grid_ratio, ngrid%parent_grid_ratio & ,grid%lu_index,ngrid%lu_index & ) ENDIF IF ( .TRUE. ) THEN CALL interp_mask_land_field ( & ( SIZE( grid%canicexy , 1 )*SIZE( grid%canicexy , 2 ) .GT. 1 ), & grid%canicexy, & cids, cide, 1, 1, cjds, cjde, & cims, cime, 1, 1, cjms, cjme, & cips, cipe, 1, 1, cjps, cjpe, & ngrid%canicexy, & nids, nide, 1, 1, njds, njde, & nims, nime, 1, 1, njms, njme, & nips, nipe, 1, 1, njps, njpe, & config_flags%shw, ngrid%imask_nostag, & .FALSE., .FALSE., & ngrid%i_parent_start, ngrid%j_parent_start, & ngrid%parent_grid_ratio, ngrid%parent_grid_ratio & ,grid%lu_index,ngrid%lu_index & ) ENDIF IF ( .TRUE. ) THEN CALL interp_mask_land_field ( & ( SIZE( grid%eahxy , 1 )*SIZE( grid%eahxy , 2 ) .GT. 1 ), & grid%eahxy, & cids, cide, 1, 1, cjds, cjde, & cims, cime, 1, 1, cjms, cjme, & cips, cipe, 1, 1, cjps, cjpe, & ngrid%eahxy, & nids, nide, 1, 1, njds, njde, & nims, nime, 1, 1, njms, njme, & nips, nipe, 1, 1, njps, njpe, & config_flags%shw, ngrid%imask_nostag, & .FALSE., .FALSE., & ngrid%i_parent_start, ngrid%j_parent_start, & ngrid%parent_grid_ratio, ngrid%parent_grid_ratio & ,grid%lu_index,ngrid%lu_index & ) ENDIF IF ( .TRUE. ) THEN CALL interp_mask_land_field ( & ( SIZE( grid%tahxy , 1 )*SIZE( grid%tahxy , 2 ) .GT. 1 ), & grid%tahxy, & cids, cide, 1, 1, cjds, cjde, & cims, cime, 1, 1, cjms, cjme, & cips, cipe, 1, 1, cjps, cjpe, & ngrid%tahxy, & nids, nide, 1, 1, njds, njde, & nims, nime, 1, 1, njms, njme, & nips, nipe, 1, 1, njps, njpe, & config_flags%shw, ngrid%imask_nostag, & .FALSE., .FALSE., & ngrid%i_parent_start, ngrid%j_parent_start, & ngrid%parent_grid_ratio, ngrid%parent_grid_ratio & ,grid%lu_index,ngrid%lu_index & ) ENDIF IF ( .TRUE. ) THEN CALL interp_mask_land_field ( & ( SIZE( grid%cmxy , 1 )*SIZE( grid%cmxy , 2 ) .GT. 1 ), & grid%cmxy, & cids, cide, 1, 1, cjds, cjde, & cims, cime, 1, 1, cjms, cjme, & cips, cipe, 1, 1, cjps, cjpe, & ngrid%cmxy, & nids, nide, 1, 1, njds, njde, & nims, nime, 1, 1, njms, njme, & nips, nipe, 1, 1, njps, njpe, & config_flags%shw, ngrid%imask_nostag, & .FALSE., .FALSE., & ngrid%i_parent_start, ngrid%j_parent_start, & ngrid%parent_grid_ratio, ngrid%parent_grid_ratio & ,grid%lu_index,ngrid%lu_index & ) ENDIF IF ( .TRUE. ) THEN CALL interp_mask_land_field ( & ( SIZE( grid%chxy , 1 )*SIZE( grid%chxy , 2 ) .GT. 1 ), & grid%chxy, & cids, cide, 1, 1, cjds, cjde, & cims, cime, 1, 1, cjms, cjme, & cips, cipe, 1, 1, cjps, cjpe, & ngrid%chxy, & nids, nide, 1, 1, njds, njde, & nims, nime, 1, 1, njms, njme, & nips, nipe, 1, 1, njps, njpe, & config_flags%shw, ngrid%imask_nostag, & .FALSE., .FALSE., & ngrid%i_parent_start, ngrid%j_parent_start, & ngrid%parent_grid_ratio, ngrid%parent_grid_ratio & ,grid%lu_index,ngrid%lu_index & ) ENDIF IF ( .TRUE. ) THEN CALL interp_mask_land_field ( & ( SIZE( grid%fwetxy , 1 )*SIZE( grid%fwetxy , 2 ) .GT. 1 ), & grid%fwetxy, & cids, cide, 1, 1, cjds, cjde, & cims, cime, 1, 1, cjms, cjme, & cips, cipe, 1, 1, cjps, cjpe, & ngrid%fwetxy, & nids, nide, 1, 1, njds, njde, & nims, nime, 1, 1, njms, njme, & nips, nipe, 1, 1, njps, njpe, & config_flags%shw, ngrid%imask_nostag, & .FALSE., .FALSE., & ngrid%i_parent_start, ngrid%j_parent_start, & ngrid%parent_grid_ratio, ngrid%parent_grid_ratio & ,grid%lu_index,ngrid%lu_index & ) ENDIF IF ( .TRUE. ) THEN CALL interp_mask_land_field ( & ( SIZE( grid%sneqvoxy , 1 )*SIZE( grid%sneqvoxy , 2 ) .GT. 1 ), & grid%sneqvoxy, & cids, cide, 1, 1, cjds, cjde, & cims, cime, 1, 1, cjms, cjme, & cips, cipe, 1, 1, cjps, cjpe, & ngrid%sneqvoxy, & nids, nide, 1, 1, njds, njde, & nims, nime, 1, 1, njms, njme, & nips, nipe, 1, 1, njps, njpe, & config_flags%shw, ngrid%imask_nostag, & .FALSE., .FALSE., & ngrid%i_parent_start, ngrid%j_parent_start, & ngrid%parent_grid_ratio, ngrid%parent_grid_ratio & ,grid%lu_index,ngrid%lu_index & ) ENDIF IF ( .TRUE. ) THEN CALL interp_mask_land_field ( & ( SIZE( grid%alboldxy , 1 )*SIZE( grid%alboldxy , 2 ) .GT. 1 ), & grid%alboldxy, & cids, cide, 1, 1, cjds, cjde, & cims, cime, 1, 1, cjms, cjme, & cips, cipe, 1, 1, cjps, cjpe, & ngrid%alboldxy, & nids, nide, 1, 1, njds, njde, & nims, nime, 1, 1, njms, njme, & nips, nipe, 1, 1, njps, njpe, & config_flags%shw, ngrid%imask_nostag, & .FALSE., .FALSE., & ngrid%i_parent_start, ngrid%j_parent_start, & ngrid%parent_grid_ratio, ngrid%parent_grid_ratio & ,grid%lu_index,ngrid%lu_index & ) ENDIF IF ( .TRUE. ) THEN CALL interp_mask_land_field ( & ( SIZE( grid%qsnowxy , 1 )*SIZE( grid%qsnowxy , 2 ) .GT. 1 ), & grid%qsnowxy, & cids, cide, 1, 1, cjds, cjde, & cims, cime, 1, 1, cjms, cjme, & cips, cipe, 1, 1, cjps, cjpe, & ngrid%qsnowxy, & nids, nide, 1, 1, njds, njde, & nims, nime, 1, 1, njms, njme, & nips, nipe, 1, 1, njps, njpe, & config_flags%shw, ngrid%imask_nostag, & .FALSE., .FALSE., & ngrid%i_parent_start, ngrid%j_parent_start, & ngrid%parent_grid_ratio, ngrid%parent_grid_ratio & ,grid%lu_index,ngrid%lu_index & ) ENDIF IF ( .TRUE. ) THEN CALL interp_mask_land_field ( & ( SIZE( grid%wslakexy , 1 )*SIZE( grid%wslakexy , 2 ) .GT. 1 ), & grid%wslakexy, & cids, cide, 1, 1, cjds, cjde, & cims, cime, 1, 1, cjms, cjme, & cips, cipe, 1, 1, cjps, cjpe, & ngrid%wslakexy, & nids, nide, 1, 1, njds, njde, & nims, nime, 1, 1, njms, njme, & nips, nipe, 1, 1, njps, njpe, & config_flags%shw, ngrid%imask_nostag, & .FALSE., .FALSE., & ngrid%i_parent_start, ngrid%j_parent_start, & ngrid%parent_grid_ratio, ngrid%parent_grid_ratio & ,grid%lu_index,ngrid%lu_index & ) ENDIF IF ( .TRUE. ) THEN CALL interp_mask_land_field ( & ( SIZE( grid%zwtxy , 1 )*SIZE( grid%zwtxy , 2 ) .GT. 1 ), & grid%zwtxy, & cids, cide, 1, 1, cjds, cjde, & cims, cime, 1, 1, cjms, cjme, & cips, cipe, 1, 1, cjps, cjpe, & ngrid%zwtxy, & nids, nide, 1, 1, njds, njde, & nims, nime, 1, 1, njms, njme, & nips, nipe, 1, 1, njps, njpe, & config_flags%shw, ngrid%imask_nostag, & .FALSE., .FALSE., & ngrid%i_parent_start, ngrid%j_parent_start, & ngrid%parent_grid_ratio, ngrid%parent_grid_ratio & ,grid%lu_index,ngrid%lu_index & ) ENDIF IF ( .TRUE. ) THEN CALL interp_mask_land_field ( & ( SIZE( grid%waxy , 1 )*SIZE( grid%waxy , 2 ) .GT. 1 ), & grid%waxy, & cids, cide, 1, 1, cjds, cjde, & cims, cime, 1, 1, cjms, cjme, & cips, cipe, 1, 1, cjps, cjpe, & ngrid%waxy, & nids, nide, 1, 1, njds, njde, & nims, nime, 1, 1, njms, njme, & nips, nipe, 1, 1, njps, njpe, & config_flags%shw, ngrid%imask_nostag, & .FALSE., .FALSE., & ngrid%i_parent_start, ngrid%j_parent_start, & ngrid%parent_grid_ratio, ngrid%parent_grid_ratio & ,grid%lu_index,ngrid%lu_index & ) ENDIF IF ( .TRUE. ) THEN CALL interp_mask_land_field ( & ( SIZE( grid%wtxy , 1 )*SIZE( grid%wtxy , 2 ) .GT. 1 ), & grid%wtxy, & cids, cide, 1, 1, cjds, cjde, & cims, cime, 1, 1, cjms, cjme, & cips, cipe, 1, 1, cjps, cjpe, & ngrid%wtxy, & nids, nide, 1, 1, njds, njde, & nims, nime, 1, 1, njms, njme, & nips, nipe, 1, 1, njps, njpe, & config_flags%shw, ngrid%imask_nostag, & .FALSE., .FALSE., & ngrid%i_parent_start, ngrid%j_parent_start, & ngrid%parent_grid_ratio, ngrid%parent_grid_ratio & ,grid%lu_index,ngrid%lu_index & ) ENDIF IF ( .TRUE. ) THEN CALL interp_mask_land_field ( & ( SIZE( grid%zsnsoxy , 1 )*SIZE( grid%zsnsoxy , 3 ) .GT. 1 ), & grid%zsnsoxy, & cids, cide, 1, config_flags%num_snso_layers, cjds, cjde, & cims, cime, 1, config_flags%num_snso_layers, cjms, cjme, & cips, cipe, 1, config_flags%num_snso_layers, cjps, cjpe, & ngrid%zsnsoxy, & nids, nide, 1, config_flags%num_snso_layers, njds, njde, & nims, nime, 1, config_flags%num_snso_layers, njms, njme, & nips, nipe, 1, config_flags%num_snso_layers, njps, njpe, & config_flags%shw, ngrid%imask_nostag, & .FALSE., .FALSE., & ngrid%i_parent_start, ngrid%j_parent_start, & ngrid%parent_grid_ratio, ngrid%parent_grid_ratio & ,grid%lu_index,ngrid%lu_index & ) ENDIF IF ( .TRUE. ) THEN CALL interp_mask_land_field ( & ( SIZE( grid%tsnoxy , 1 )*SIZE( grid%tsnoxy , 3 ) .GT. 1 ), & grid%tsnoxy, & cids, cide, 1, config_flags%num_snow_layers, cjds, cjde, & cims, cime, 1, config_flags%num_snow_layers, cjms, cjme, & cips, cipe, 1, config_flags%num_snow_layers, cjps, cjpe, & ngrid%tsnoxy, & nids, nide, 1, config_flags%num_snow_layers, njds, njde, & nims, nime, 1, config_flags%num_snow_layers, njms, njme, & nips, nipe, 1, config_flags%num_snow_layers, njps, njpe, & config_flags%shw, ngrid%imask_nostag, & .FALSE., .FALSE., & ngrid%i_parent_start, ngrid%j_parent_start, & ngrid%parent_grid_ratio, ngrid%parent_grid_ratio & ,grid%lu_index,ngrid%lu_index & ) ENDIF IF ( .TRUE. ) THEN CALL interp_mask_land_field ( & ( SIZE( grid%snicexy , 1 )*SIZE( grid%snicexy , 3 ) .GT. 1 ), & grid%snicexy, & cids, cide, 1, config_flags%num_snow_layers, cjds, cjde, & cims, cime, 1, config_flags%num_snow_layers, cjms, cjme, & cips, cipe, 1, config_flags%num_snow_layers, cjps, cjpe, & ngrid%snicexy, & nids, nide, 1, config_flags%num_snow_layers, njds, njde, & nims, nime, 1, config_flags%num_snow_layers, njms, njme, & nips, nipe, 1, config_flags%num_snow_layers, njps, njpe, & config_flags%shw, ngrid%imask_nostag, & .FALSE., .FALSE., & ngrid%i_parent_start, ngrid%j_parent_start, & ngrid%parent_grid_ratio, ngrid%parent_grid_ratio & ,grid%lu_index,ngrid%lu_index & ) ENDIF IF ( .TRUE. ) THEN CALL interp_mask_land_field ( & ( SIZE( grid%snliqxy , 1 )*SIZE( grid%snliqxy , 3 ) .GT. 1 ), & grid%snliqxy, & cids, cide, 1, config_flags%num_snow_layers, cjds, cjde, & cims, cime, 1, config_flags%num_snow_layers, cjms, cjme, & cips, cipe, 1, config_flags%num_snow_layers, cjps, cjpe, & ngrid%snliqxy, & nids, nide, 1, config_flags%num_snow_layers, njds, njde, & nims, nime, 1, config_flags%num_snow_layers, njms, njme, & nips, nipe, 1, config_flags%num_snow_layers, njps, njpe, & config_flags%shw, ngrid%imask_nostag, & .FALSE., .FALSE., & ngrid%i_parent_start, ngrid%j_parent_start, & ngrid%parent_grid_ratio, ngrid%parent_grid_ratio & ,grid%lu_index,ngrid%lu_index & ) ENDIF IF ( .TRUE. ) THEN CALL interp_mask_land_field ( & ( SIZE( grid%lfmassxy , 1 )*SIZE( grid%lfmassxy , 2 ) .GT. 1 ), & grid%lfmassxy, & cids, cide, 1, 1, cjds, cjde, & cims, cime, 1, 1, cjms, cjme, & cips, cipe, 1, 1, cjps, cjpe, & ngrid%lfmassxy, & nids, nide, 1, 1, njds, njde, & nims, nime, 1, 1, njms, njme, & nips, nipe, 1, 1, njps, njpe, & config_flags%shw, ngrid%imask_nostag, & .FALSE., .FALSE., & ngrid%i_parent_start, ngrid%j_parent_start, & ngrid%parent_grid_ratio, ngrid%parent_grid_ratio & ,grid%lu_index,ngrid%lu_index & ) ENDIF IF ( .TRUE. ) THEN CALL interp_mask_land_field ( & ( SIZE( grid%rtmassxy , 1 )*SIZE( grid%rtmassxy , 2 ) .GT. 1 ), & grid%rtmassxy, & cids, cide, 1, 1, cjds, cjde, & cims, cime, 1, 1, cjms, cjme, & cips, cipe, 1, 1, cjps, cjpe, & ngrid%rtmassxy, & nids, nide, 1, 1, njds, njde, & nims, nime, 1, 1, njms, njme, & nips, nipe, 1, 1, njps, njpe, & config_flags%shw, ngrid%imask_nostag, & .FALSE., .FALSE., & ngrid%i_parent_start, ngrid%j_parent_start, & ngrid%parent_grid_ratio, ngrid%parent_grid_ratio & ,grid%lu_index,ngrid%lu_index & ) ENDIF IF ( .TRUE. ) THEN CALL interp_mask_land_field ( & ( SIZE( grid%stmassxy , 1 )*SIZE( grid%stmassxy , 2 ) .GT. 1 ), & grid%stmassxy, & cids, cide, 1, 1, cjds, cjde, & cims, cime, 1, 1, cjms, cjme, & cips, cipe, 1, 1, cjps, cjpe, & ngrid%stmassxy, & nids, nide, 1, 1, njds, njde, & nims, nime, 1, 1, njms, njme, & nips, nipe, 1, 1, njps, njpe, & config_flags%shw, ngrid%imask_nostag, & .FALSE., .FALSE., & ngrid%i_parent_start, ngrid%j_parent_start, & ngrid%parent_grid_ratio, ngrid%parent_grid_ratio & ,grid%lu_index,ngrid%lu_index & ) ENDIF IF ( .TRUE. ) THEN CALL interp_mask_land_field ( & ( SIZE( grid%woodxy , 1 )*SIZE( grid%woodxy , 2 ) .GT. 1 ), & grid%woodxy, & cids, cide, 1, 1, cjds, cjde, & cims, cime, 1, 1, cjms, cjme, & cips, cipe, 1, 1, cjps, cjpe, & ngrid%woodxy, & nids, nide, 1, 1, njds, njde, & nims, nime, 1, 1, njms, njme, & nips, nipe, 1, 1, njps, njpe, & config_flags%shw, ngrid%imask_nostag, & .FALSE., .FALSE., & ngrid%i_parent_start, ngrid%j_parent_start, & ngrid%parent_grid_ratio, ngrid%parent_grid_ratio & ,grid%lu_index,ngrid%lu_index & ) ENDIF IF ( .TRUE. ) THEN CALL interp_mask_land_field ( & ( SIZE( grid%stblcpxy , 1 )*SIZE( grid%stblcpxy , 2 ) .GT. 1 ), & grid%stblcpxy, & cids, cide, 1, 1, cjds, cjde, & cims, cime, 1, 1, cjms, cjme, & cips, cipe, 1, 1, cjps, cjpe, & ngrid%stblcpxy, & nids, nide, 1, 1, njds, njde, & nims, nime, 1, 1, njms, njme, & nips, nipe, 1, 1, njps, njpe, & config_flags%shw, ngrid%imask_nostag, & .FALSE., .FALSE., & ngrid%i_parent_start, ngrid%j_parent_start, & ngrid%parent_grid_ratio, ngrid%parent_grid_ratio & ,grid%lu_index,ngrid%lu_index & ) ENDIF IF ( .TRUE. ) THEN CALL interp_mask_land_field ( & ( SIZE( grid%fastcpxy , 1 )*SIZE( grid%fastcpxy , 2 ) .GT. 1 ), & grid%fastcpxy, & cids, cide, 1, 1, cjds, cjde, & cims, cime, 1, 1, cjms, cjme, & cips, cipe, 1, 1, cjps, cjpe, & ngrid%fastcpxy, & nids, nide, 1, 1, njds, njde, & nims, nime, 1, 1, njms, njme, & nips, nipe, 1, 1, njps, njpe, & config_flags%shw, ngrid%imask_nostag, & .FALSE., .FALSE., & ngrid%i_parent_start, ngrid%j_parent_start, & ngrid%parent_grid_ratio, ngrid%parent_grid_ratio & ,grid%lu_index,ngrid%lu_index & ) ENDIF IF ( .TRUE. ) THEN CALL interp_mask_land_field ( & ( SIZE( grid%xsaixy , 1 )*SIZE( grid%xsaixy , 2 ) .GT. 1 ), & grid%xsaixy, & cids, cide, 1, 1, cjds, cjde, & cims, cime, 1, 1, cjms, cjme, & cips, cipe, 1, 1, cjps, cjpe, & ngrid%xsaixy, & nids, nide, 1, 1, njds, njde, & nims, nime, 1, 1, njms, njme, & nips, nipe, 1, 1, njps, njpe, & config_flags%shw, ngrid%imask_nostag, & .FALSE., .FALSE., & ngrid%i_parent_start, ngrid%j_parent_start, & ngrid%parent_grid_ratio, ngrid%parent_grid_ratio & ,grid%lu_index,ngrid%lu_index & ) ENDIF IF ( .TRUE. ) THEN CALL interp_mask_land_field ( & ( SIZE( grid%tradxy , 1 )*SIZE( grid%tradxy , 2 ) .GT. 1 ), & grid%tradxy, & cids, cide, 1, 1, cjds, cjde, & cims, cime, 1, 1, cjms, cjme, & cips, cipe, 1, 1, cjps, cjpe, & ngrid%tradxy, & nids, nide, 1, 1, njds, njde, & nims, nime, 1, 1, njms, njme, & nips, nipe, 1, 1, njps, njpe, & config_flags%shw, ngrid%imask_nostag, & .FALSE., .FALSE., & ngrid%i_parent_start, ngrid%j_parent_start, & ngrid%parent_grid_ratio, ngrid%parent_grid_ratio & ,grid%lu_index,ngrid%lu_index & ) ENDIF IF ( .TRUE. ) THEN CALL interp_mask_land_field ( & ( SIZE( grid%tsxy , 1 )*SIZE( grid%tsxy , 2 ) .GT. 1 ), & grid%tsxy, & cids, cide, 1, 1, cjds, cjde, & cims, cime, 1, 1, cjms, cjme, & cips, cipe, 1, 1, cjps, cjpe, & ngrid%tsxy, & nids, nide, 1, 1, njds, njde, & nims, nime, 1, 1, njms, njme, & nips, nipe, 1, 1, njps, njpe, & config_flags%shw, ngrid%imask_nostag, & .FALSE., .FALSE., & ngrid%i_parent_start, ngrid%j_parent_start, & ngrid%parent_grid_ratio, ngrid%parent_grid_ratio & ,grid%lu_index,ngrid%lu_index & ) ENDIF IF ( .TRUE. ) THEN CALL interp_mask_land_field ( & ( SIZE( grid%neexy , 1 )*SIZE( grid%neexy , 2 ) .GT. 1 ), & grid%neexy, & cids, cide, 1, 1, cjds, cjde, & cims, cime, 1, 1, cjms, cjme, & cips, cipe, 1, 1, cjps, cjpe, & ngrid%neexy, & nids, nide, 1, 1, njds, njde, & nims, nime, 1, 1, njms, njme, & nips, nipe, 1, 1, njps, njpe, & config_flags%shw, ngrid%imask_nostag, & .FALSE., .FALSE., & ngrid%i_parent_start, ngrid%j_parent_start, & ngrid%parent_grid_ratio, ngrid%parent_grid_ratio & ,grid%lu_index,ngrid%lu_index & ) ENDIF IF ( .TRUE. ) THEN CALL interp_mask_land_field ( & ( SIZE( grid%gppxy , 1 )*SIZE( grid%gppxy , 2 ) .GT. 1 ), & grid%gppxy, & cids, cide, 1, 1, cjds, cjde, & cims, cime, 1, 1, cjms, cjme, & cips, cipe, 1, 1, cjps, cjpe, & ngrid%gppxy, & nids, nide, 1, 1, njds, njde, & nims, nime, 1, 1, njms, njme, & nips, nipe, 1, 1, njps, njpe, & config_flags%shw, ngrid%imask_nostag, & .FALSE., .FALSE., & ngrid%i_parent_start, ngrid%j_parent_start, & ngrid%parent_grid_ratio, ngrid%parent_grid_ratio & ,grid%lu_index,ngrid%lu_index & ) ENDIF IF ( .TRUE. ) THEN CALL interp_mask_land_field ( & ( SIZE( grid%nppxy , 1 )*SIZE( grid%nppxy , 2 ) .GT. 1 ), & grid%nppxy, & cids, cide, 1, 1, cjds, cjde, & cims, cime, 1, 1, cjms, cjme, & cips, cipe, 1, 1, cjps, cjpe, & ngrid%nppxy, & nids, nide, 1, 1, njds, njde, & nims, nime, 1, 1, njms, njme, & nips, nipe, 1, 1, njps, njpe, & config_flags%shw, ngrid%imask_nostag, & .FALSE., .FALSE., & ngrid%i_parent_start, ngrid%j_parent_start, & ngrid%parent_grid_ratio, ngrid%parent_grid_ratio & ,grid%lu_index,ngrid%lu_index & ) ENDIF IF ( .TRUE. ) THEN CALL interp_mask_land_field ( & ( SIZE( grid%fvegxy , 1 )*SIZE( grid%fvegxy , 2 ) .GT. 1 ), & grid%fvegxy, & cids, cide, 1, 1, cjds, cjde, & cims, cime, 1, 1, cjms, cjme, & cips, cipe, 1, 1, cjps, cjpe, & ngrid%fvegxy, & nids, nide, 1, 1, njds, njde, & nims, nime, 1, 1, njms, njme, & nips, nipe, 1, 1, njps, njpe, & config_flags%shw, ngrid%imask_nostag, & .FALSE., .FALSE., & ngrid%i_parent_start, ngrid%j_parent_start, & ngrid%parent_grid_ratio, ngrid%parent_grid_ratio & ,grid%lu_index,ngrid%lu_index & ) ENDIF IF ( .TRUE. ) THEN CALL interp_mask_land_field ( & ( SIZE( grid%qinxy , 1 )*SIZE( grid%qinxy , 2 ) .GT. 1 ), & grid%qinxy, & cids, cide, 1, 1, cjds, cjde, & cims, cime, 1, 1, cjms, cjme, & cips, cipe, 1, 1, cjps, cjpe, & ngrid%qinxy, & nids, nide, 1, 1, njds, njde, & nims, nime, 1, 1, njms, njme, & nips, nipe, 1, 1, njps, njpe, & config_flags%shw, ngrid%imask_nostag, & .FALSE., .FALSE., & ngrid%i_parent_start, ngrid%j_parent_start, & ngrid%parent_grid_ratio, ngrid%parent_grid_ratio & ,grid%lu_index,ngrid%lu_index & ) ENDIF IF ( .TRUE. ) THEN CALL interp_mask_land_field ( & ( SIZE( grid%runsfxy , 1 )*SIZE( grid%runsfxy , 2 ) .GT. 1 ), & grid%runsfxy, & cids, cide, 1, 1, cjds, cjde, & cims, cime, 1, 1, cjms, cjme, & cips, cipe, 1, 1, cjps, cjpe, & ngrid%runsfxy, & nids, nide, 1, 1, njds, njde, & nims, nime, 1, 1, njms, njme, & nips, nipe, 1, 1, njps, njpe, & config_flags%shw, ngrid%imask_nostag, & .FALSE., .FALSE., & ngrid%i_parent_start, ngrid%j_parent_start, & ngrid%parent_grid_ratio, ngrid%parent_grid_ratio & ,grid%lu_index,ngrid%lu_index & ) ENDIF IF ( .TRUE. ) THEN CALL interp_mask_land_field ( & ( SIZE( grid%runsbxy , 1 )*SIZE( grid%runsbxy , 2 ) .GT. 1 ), & grid%runsbxy, & cids, cide, 1, 1, cjds, cjde, & cims, cime, 1, 1, cjms, cjme, & cips, cipe, 1, 1, cjps, cjpe, & ngrid%runsbxy, & nids, nide, 1, 1, njds, njde, & nims, nime, 1, 1, njms, njme, & nips, nipe, 1, 1, njps, njpe, & config_flags%shw, ngrid%imask_nostag, & .FALSE., .FALSE., & ngrid%i_parent_start, ngrid%j_parent_start, & ngrid%parent_grid_ratio, ngrid%parent_grid_ratio & ,grid%lu_index,ngrid%lu_index & ) ENDIF IF ( .TRUE. ) THEN CALL interp_mask_land_field ( & ( SIZE( grid%ecanxy , 1 )*SIZE( grid%ecanxy , 2 ) .GT. 1 ), & grid%ecanxy, & cids, cide, 1, 1, cjds, cjde, & cims, cime, 1, 1, cjms, cjme, & cips, cipe, 1, 1, cjps, cjpe, & ngrid%ecanxy, & nids, nide, 1, 1, njds, njde, & nims, nime, 1, 1, njms, njme, & nips, nipe, 1, 1, njps, njpe, & config_flags%shw, ngrid%imask_nostag, & .FALSE., .FALSE., & ngrid%i_parent_start, ngrid%j_parent_start, & ngrid%parent_grid_ratio, ngrid%parent_grid_ratio & ,grid%lu_index,ngrid%lu_index & ) ENDIF IF ( .TRUE. ) THEN CALL interp_mask_land_field ( & ( SIZE( grid%edirxy , 1 )*SIZE( grid%edirxy , 2 ) .GT. 1 ), & grid%edirxy, & cids, cide, 1, 1, cjds, cjde, & cims, cime, 1, 1, cjms, cjme, & cips, cipe, 1, 1, cjps, cjpe, & ngrid%edirxy, & nids, nide, 1, 1, njds, njde, & nims, nime, 1, 1, njms, njme, & nips, nipe, 1, 1, njps, njpe, & config_flags%shw, ngrid%imask_nostag, & .FALSE., .FALSE., & ngrid%i_parent_start, ngrid%j_parent_start, & ngrid%parent_grid_ratio, ngrid%parent_grid_ratio & ,grid%lu_index,ngrid%lu_index & ) ENDIF IF ( .TRUE. ) THEN CALL interp_mask_land_field ( & ( SIZE( grid%etranxy , 1 )*SIZE( grid%etranxy , 2 ) .GT. 1 ), & grid%etranxy, & cids, cide, 1, 1, cjds, cjde, & cims, cime, 1, 1, cjms, cjme, & cips, cipe, 1, 1, cjps, cjpe, & ngrid%etranxy, & nids, nide, 1, 1, njds, njde, & nims, nime, 1, 1, njms, njme, & nips, nipe, 1, 1, njps, njpe, & config_flags%shw, ngrid%imask_nostag, & .FALSE., .FALSE., & ngrid%i_parent_start, ngrid%j_parent_start, & ngrid%parent_grid_ratio, ngrid%parent_grid_ratio & ,grid%lu_index,ngrid%lu_index & ) ENDIF IF ( .TRUE. ) THEN CALL interp_mask_land_field ( & ( SIZE( grid%fsaxy , 1 )*SIZE( grid%fsaxy , 2 ) .GT. 1 ), & grid%fsaxy, & cids, cide, 1, 1, cjds, cjde, & cims, cime, 1, 1, cjms, cjme, & cips, cipe, 1, 1, cjps, cjpe, & ngrid%fsaxy, & nids, nide, 1, 1, njds, njde, & nims, nime, 1, 1, njms, njme, & nips, nipe, 1, 1, njps, njpe, & config_flags%shw, ngrid%imask_nostag, & .FALSE., .FALSE., & ngrid%i_parent_start, ngrid%j_parent_start, & ngrid%parent_grid_ratio, ngrid%parent_grid_ratio & ,grid%lu_index,ngrid%lu_index & ) ENDIF IF ( .TRUE. ) THEN CALL interp_mask_land_field ( & ( SIZE( grid%firaxy , 1 )*SIZE( grid%firaxy , 2 ) .GT. 1 ), & grid%firaxy, & cids, cide, 1, 1, cjds, cjde, & cims, cime, 1, 1, cjms, cjme, & cips, cipe, 1, 1, cjps, cjpe, & ngrid%firaxy, & nids, nide, 1, 1, njds, njde, & nims, nime, 1, 1, njms, njme, & nips, nipe, 1, 1, njps, njpe, & config_flags%shw, ngrid%imask_nostag, & .FALSE., .FALSE., & ngrid%i_parent_start, ngrid%j_parent_start, & ngrid%parent_grid_ratio, ngrid%parent_grid_ratio & ,grid%lu_index,ngrid%lu_index & ) ENDIF IF ( .TRUE. ) THEN CALL interp_mask_land_field ( & ( SIZE( grid%aparxy , 1 )*SIZE( grid%aparxy , 2 ) .GT. 1 ), & grid%aparxy, & cids, cide, 1, 1, cjds, cjde, & cims, cime, 1, 1, cjms, cjme, & cips, cipe, 1, 1, cjps, cjpe, & ngrid%aparxy, & nids, nide, 1, 1, njds, njde, & nims, nime, 1, 1, njms, njme, & nips, nipe, 1, 1, njps, njpe, & config_flags%shw, ngrid%imask_nostag, & .FALSE., .FALSE., & ngrid%i_parent_start, ngrid%j_parent_start, & ngrid%parent_grid_ratio, ngrid%parent_grid_ratio & ,grid%lu_index,ngrid%lu_index & ) ENDIF IF ( .TRUE. ) THEN CALL interp_mask_land_field ( & ( SIZE( grid%psnxy , 1 )*SIZE( grid%psnxy , 2 ) .GT. 1 ), & grid%psnxy, & cids, cide, 1, 1, cjds, cjde, & cims, cime, 1, 1, cjms, cjme, & cips, cipe, 1, 1, cjps, cjpe, & ngrid%psnxy, & nids, nide, 1, 1, njds, njde, & nims, nime, 1, 1, njms, njme, & nips, nipe, 1, 1, njps, njpe, & config_flags%shw, ngrid%imask_nostag, & .FALSE., .FALSE., & ngrid%i_parent_start, ngrid%j_parent_start, & ngrid%parent_grid_ratio, ngrid%parent_grid_ratio & ,grid%lu_index,ngrid%lu_index & ) ENDIF IF ( .TRUE. ) THEN CALL interp_mask_land_field ( & ( SIZE( grid%savxy , 1 )*SIZE( grid%savxy , 2 ) .GT. 1 ), & grid%savxy, & cids, cide, 1, 1, cjds, cjde, & cims, cime, 1, 1, cjms, cjme, & cips, cipe, 1, 1, cjps, cjpe, & ngrid%savxy, & nids, nide, 1, 1, njds, njde, & nims, nime, 1, 1, njms, njme, & nips, nipe, 1, 1, njps, njpe, & config_flags%shw, ngrid%imask_nostag, & .FALSE., .FALSE., & ngrid%i_parent_start, ngrid%j_parent_start, & ngrid%parent_grid_ratio, ngrid%parent_grid_ratio & ,grid%lu_index,ngrid%lu_index & ) ENDIF IF ( .TRUE. ) THEN CALL interp_mask_land_field ( & ( SIZE( grid%sagxy , 1 )*SIZE( grid%sagxy , 2 ) .GT. 1 ), & grid%sagxy, & cids, cide, 1, 1, cjds, cjde, & cims, cime, 1, 1, cjms, cjme, & cips, cipe, 1, 1, cjps, cjpe, & ngrid%sagxy, & nids, nide, 1, 1, njds, njde, & nims, nime, 1, 1, njms, njme, & nips, nipe, 1, 1, njps, njpe, & config_flags%shw, ngrid%imask_nostag, & .FALSE., .FALSE., & ngrid%i_parent_start, ngrid%j_parent_start, & ngrid%parent_grid_ratio, ngrid%parent_grid_ratio & ,grid%lu_index,ngrid%lu_index & ) ENDIF IF ( .TRUE. ) THEN CALL interp_mask_land_field ( & ( SIZE( grid%fsnoxy , 1 )*SIZE( grid%fsnoxy , 2 ) .GT. 1 ), & grid%fsnoxy, & cids, cide, 1, 1, cjds, cjde, & cims, cime, 1, 1, cjms, cjme, & cips, cipe, 1, 1, cjps, cjpe, & ngrid%fsnoxy, & nids, nide, 1, 1, njds, njde, & nims, nime, 1, 1, njms, njme, & nips, nipe, 1, 1, njps, njpe, & config_flags%shw, ngrid%imask_nostag, & .FALSE., .FALSE., & ngrid%i_parent_start, ngrid%j_parent_start, & ngrid%parent_grid_ratio, ngrid%parent_grid_ratio & ,grid%lu_index,ngrid%lu_index & ) ENDIF IF ( .TRUE. ) THEN CALL interp_mask_land_field ( & ( SIZE( grid%t2mvxy , 1 )*SIZE( grid%t2mvxy , 2 ) .GT. 1 ), & grid%t2mvxy, & cids, cide, 1, 1, cjds, cjde, & cims, cime, 1, 1, cjms, cjme, & cips, cipe, 1, 1, cjps, cjpe, & ngrid%t2mvxy, & nids, nide, 1, 1, njds, njde, & nims, nime, 1, 1, njms, njme, & nips, nipe, 1, 1, njps, njpe, & config_flags%shw, ngrid%imask_nostag, & .FALSE., .FALSE., & ngrid%i_parent_start, ngrid%j_parent_start, & ngrid%parent_grid_ratio, ngrid%parent_grid_ratio & ,grid%lu_index,ngrid%lu_index & ) ENDIF IF ( .TRUE. ) THEN CALL interp_mask_land_field ( & ( SIZE( grid%t2mbxy , 1 )*SIZE( grid%t2mbxy , 2 ) .GT. 1 ), & grid%t2mbxy, & cids, cide, 1, 1, cjds, cjde, & cims, cime, 1, 1, cjms, cjme, & cips, cipe, 1, 1, cjps, cjpe, & ngrid%t2mbxy, & nids, nide, 1, 1, njds, njde, & nims, nime, 1, 1, njms, njme, & nips, nipe, 1, 1, njps, njpe, & config_flags%shw, ngrid%imask_nostag, & .FALSE., .FALSE., & ngrid%i_parent_start, ngrid%j_parent_start, & ngrid%parent_grid_ratio, ngrid%parent_grid_ratio & ,grid%lu_index,ngrid%lu_index & ) ENDIF IF ( .TRUE. ) THEN CALL interp_mask_land_field ( & ( SIZE( grid%q2mvxy , 1 )*SIZE( grid%q2mvxy , 2 ) .GT. 1 ), & grid%q2mvxy, & cids, cide, 1, 1, cjds, cjde, & cims, cime, 1, 1, cjms, cjme, & cips, cipe, 1, 1, cjps, cjpe, & ngrid%q2mvxy, & nids, nide, 1, 1, njds, njde, & nims, nime, 1, 1, njms, njme, & nips, nipe, 1, 1, njps, njpe, & config_flags%shw, ngrid%imask_nostag, & .FALSE., .FALSE., & ngrid%i_parent_start, ngrid%j_parent_start, & ngrid%parent_grid_ratio, ngrid%parent_grid_ratio & ,grid%lu_index,ngrid%lu_index & ) ENDIF IF ( .TRUE. ) THEN CALL interp_mask_land_field ( & ( SIZE( grid%q2mbxy , 1 )*SIZE( grid%q2mbxy , 2 ) .GT. 1 ), & grid%q2mbxy, & cids, cide, 1, 1, cjds, cjde, & cims, cime, 1, 1, cjms, cjme, & cips, cipe, 1, 1, cjps, cjpe, & ngrid%q2mbxy, & nids, nide, 1, 1, njds, njde, & nims, nime, 1, 1, njms, njme, & nips, nipe, 1, 1, njps, njpe, & config_flags%shw, ngrid%imask_nostag, & .FALSE., .FALSE., & ngrid%i_parent_start, ngrid%j_parent_start, & ngrid%parent_grid_ratio, ngrid%parent_grid_ratio & ,grid%lu_index,ngrid%lu_index & ) ENDIF IF ( .TRUE. ) THEN CALL interp_mask_land_field ( & ( SIZE( grid%chstarxy , 1 )*SIZE( grid%chstarxy , 2 ) .GT. 1 ), & grid%chstarxy, & cids, cide, 1, 1, cjds, cjde, & cims, cime, 1, 1, cjms, cjme, & cips, cipe, 1, 1, cjps, cjpe, & ngrid%chstarxy, & nids, nide, 1, 1, njds, njde, & nims, nime, 1, 1, njms, njme, & nips, nipe, 1, 1, njps, njpe, & config_flags%shw, ngrid%imask_nostag, & .FALSE., .FALSE., & ngrid%i_parent_start, ngrid%j_parent_start, & ngrid%parent_grid_ratio, ngrid%parent_grid_ratio & ,grid%lu_index,ngrid%lu_index & ) ENDIF IF ( .TRUE. ) THEN CALL interp_mask_land_field ( & ( SIZE( grid%rssunxy , 1 )*SIZE( grid%rssunxy , 2 ) .GT. 1 ), & grid%rssunxy, & cids, cide, 1, 1, cjds, cjde, & cims, cime, 1, 1, cjms, cjme, & cips, cipe, 1, 1, cjps, cjpe, & ngrid%rssunxy, & nids, nide, 1, 1, njds, njde, & nims, nime, 1, 1, njms, njme, & nips, nipe, 1, 1, njps, njpe, & config_flags%shw, ngrid%imask_nostag, & .FALSE., .FALSE., & ngrid%i_parent_start, ngrid%j_parent_start, & ngrid%parent_grid_ratio, ngrid%parent_grid_ratio & ,grid%lu_index,ngrid%lu_index & ) ENDIF IF ( .TRUE. ) THEN CALL interp_mask_land_field ( & ( SIZE( grid%rsshaxy , 1 )*SIZE( grid%rsshaxy , 2 ) .GT. 1 ), & grid%rsshaxy, & cids, cide, 1, 1, cjds, cjde, & cims, cime, 1, 1, cjms, cjme, & cips, cipe, 1, 1, cjps, cjpe, & ngrid%rsshaxy, & nids, nide, 1, 1, njds, njde, & nims, nime, 1, 1, njms, njme, & nips, nipe, 1, 1, njps, njpe, & config_flags%shw, ngrid%imask_nostag, & .FALSE., .FALSE., & ngrid%i_parent_start, ngrid%j_parent_start, & ngrid%parent_grid_ratio, ngrid%parent_grid_ratio & ,grid%lu_index,ngrid%lu_index & ) ENDIF IF ( .TRUE. ) THEN CALL interp_mask_land_field ( & ( SIZE( grid%bgapxy , 1 )*SIZE( grid%bgapxy , 2 ) .GT. 1 ), & grid%bgapxy, & cids, cide, 1, 1, cjds, cjde, & cims, cime, 1, 1, cjms, cjme, & cips, cipe, 1, 1, cjps, cjpe, & ngrid%bgapxy, & nids, nide, 1, 1, njds, njde, & nims, nime, 1, 1, njms, njme, & nips, nipe, 1, 1, njps, njpe, & config_flags%shw, ngrid%imask_nostag, & .FALSE., .FALSE., & ngrid%i_parent_start, ngrid%j_parent_start, & ngrid%parent_grid_ratio, ngrid%parent_grid_ratio & ,grid%lu_index,ngrid%lu_index & ) ENDIF IF ( .TRUE. ) THEN CALL interp_mask_land_field ( & ( SIZE( grid%wgapxy , 1 )*SIZE( grid%wgapxy , 2 ) .GT. 1 ), & grid%wgapxy, & cids, cide, 1, 1, cjds, cjde, & cims, cime, 1, 1, cjms, cjme, & cips, cipe, 1, 1, cjps, cjpe, & ngrid%wgapxy, & nids, nide, 1, 1, njds, njde, & nims, nime, 1, 1, njms, njme, & nips, nipe, 1, 1, njps, njpe, & config_flags%shw, ngrid%imask_nostag, & .FALSE., .FALSE., & ngrid%i_parent_start, ngrid%j_parent_start, & ngrid%parent_grid_ratio, ngrid%parent_grid_ratio & ,grid%lu_index,ngrid%lu_index & ) ENDIF IF ( .TRUE. ) THEN CALL interp_mask_land_field ( & ( SIZE( grid%gapxy , 1 )*SIZE( grid%gapxy , 2 ) .GT. 1 ), & grid%gapxy, & cids, cide, 1, 1, cjds, cjde, & cims, cime, 1, 1, cjms, cjme, & cips, cipe, 1, 1, cjps, cjpe, & ngrid%gapxy, & nids, nide, 1, 1, njds, njde, & nims, nime, 1, 1, njms, njme, & nips, nipe, 1, 1, njps, njpe, & config_flags%shw, ngrid%imask_nostag, & .FALSE., .FALSE., & ngrid%i_parent_start, ngrid%j_parent_start, & ngrid%parent_grid_ratio, ngrid%parent_grid_ratio & ,grid%lu_index,ngrid%lu_index & ) ENDIF IF ( .TRUE. ) THEN CALL interp_mask_land_field ( & ( SIZE( grid%tgvxy , 1 )*SIZE( grid%tgvxy , 2 ) .GT. 1 ), & grid%tgvxy, & cids, cide, 1, 1, cjds, cjde, & cims, cime, 1, 1, cjms, cjme, & cips, cipe, 1, 1, cjps, cjpe, & ngrid%tgvxy, & nids, nide, 1, 1, njds, njde, & nims, nime, 1, 1, njms, njme, & nips, nipe, 1, 1, njps, njpe, & config_flags%shw, ngrid%imask_nostag, & .FALSE., .FALSE., & ngrid%i_parent_start, ngrid%j_parent_start, & ngrid%parent_grid_ratio, ngrid%parent_grid_ratio & ,grid%lu_index,ngrid%lu_index & ) ENDIF IF ( .TRUE. ) THEN CALL interp_mask_land_field ( & ( SIZE( grid%tgbxy , 1 )*SIZE( grid%tgbxy , 2 ) .GT. 1 ), & grid%tgbxy, & cids, cide, 1, 1, cjds, cjde, & cims, cime, 1, 1, cjms, cjme, & cips, cipe, 1, 1, cjps, cjpe, & ngrid%tgbxy, & nids, nide, 1, 1, njds, njde, & nims, nime, 1, 1, njms, njme, & nips, nipe, 1, 1, njps, njpe, & config_flags%shw, ngrid%imask_nostag, & .FALSE., .FALSE., & ngrid%i_parent_start, ngrid%j_parent_start, & ngrid%parent_grid_ratio, ngrid%parent_grid_ratio & ,grid%lu_index,ngrid%lu_index & ) ENDIF IF ( .TRUE. ) THEN CALL interp_mask_land_field ( & ( SIZE( grid%chvxy , 1 )*SIZE( grid%chvxy , 2 ) .GT. 1 ), & grid%chvxy, & cids, cide, 1, 1, cjds, cjde, & cims, cime, 1, 1, cjms, cjme, & cips, cipe, 1, 1, cjps, cjpe, & ngrid%chvxy, & nids, nide, 1, 1, njds, njde, & nims, nime, 1, 1, njms, njme, & nips, nipe, 1, 1, njps, njpe, & config_flags%shw, ngrid%imask_nostag, & .FALSE., .FALSE., & ngrid%i_parent_start, ngrid%j_parent_start, & ngrid%parent_grid_ratio, ngrid%parent_grid_ratio & ,grid%lu_index,ngrid%lu_index & ) ENDIF IF ( .TRUE. ) THEN CALL interp_mask_land_field ( & ( SIZE( grid%chbxy , 1 )*SIZE( grid%chbxy , 2 ) .GT. 1 ), & grid%chbxy, & cids, cide, 1, 1, cjds, cjde, & cims, cime, 1, 1, cjms, cjme, & cips, cipe, 1, 1, cjps, cjpe, & ngrid%chbxy, & nids, nide, 1, 1, njds, njde, & nims, nime, 1, 1, njms, njme, & nips, nipe, 1, 1, njps, njpe, & config_flags%shw, ngrid%imask_nostag, & .FALSE., .FALSE., & ngrid%i_parent_start, ngrid%j_parent_start, & ngrid%parent_grid_ratio, ngrid%parent_grid_ratio & ,grid%lu_index,ngrid%lu_index & ) ENDIF IF ( .TRUE. ) THEN CALL interp_mask_land_field ( & ( SIZE( grid%tmn , 1 )*SIZE( grid%tmn , 2 ) .GT. 1 ), & grid%tmn, & cids, cide, 1, 1, cjds, cjde, & cims, cime, 1, 1, cjms, cjme, & cips, cipe, 1, 1, cjps, cjpe, & ngrid%tmn, & nids, nide, 1, 1, njds, njde, & nims, nime, 1, 1, njms, njme, & nips, nipe, 1, 1, njps, njpe, & config_flags%shw, ngrid%imask_nostag, & .FALSE., .FALSE., & ngrid%i_parent_start, ngrid%j_parent_start, & ngrid%parent_grid_ratio, ngrid%parent_grid_ratio & ,grid%lu_index,ngrid%lu_index & ) ENDIF IF ( .TRUE. ) THEN CALL interp_mask_land_field ( & ( SIZE( grid%tyr , 1 )*SIZE( grid%tyr , 2 ) .GT. 1 ), & grid%tyr, & cids, cide, 1, 1, cjds, cjde, & cims, cime, 1, 1, cjms, cjme, & cips, cipe, 1, 1, cjps, cjpe, & ngrid%tyr, & nids, nide, 1, 1, njds, njde, & nims, nime, 1, 1, njms, njme, & nips, nipe, 1, 1, njps, njpe, & config_flags%shw, ngrid%imask_nostag, & .FALSE., .FALSE., & ngrid%i_parent_start, ngrid%j_parent_start, & ngrid%parent_grid_ratio, ngrid%parent_grid_ratio & ,grid%lu_index,ngrid%lu_index & ) ENDIF IF ( .TRUE. ) THEN CALL interp_mask_land_field ( & ( SIZE( grid%tyra , 1 )*SIZE( grid%tyra , 2 ) .GT. 1 ), & grid%tyra, & cids, cide, 1, 1, cjds, cjde, & cims, cime, 1, 1, cjms, cjme, & cips, cipe, 1, 1, cjps, cjpe, & ngrid%tyra, & nids, nide, 1, 1, njds, njde, & nims, nime, 1, 1, njms, njme, & nips, nipe, 1, 1, njps, njpe, & config_flags%shw, ngrid%imask_nostag, & .FALSE., .FALSE., & ngrid%i_parent_start, ngrid%j_parent_start, & ngrid%parent_grid_ratio, ngrid%parent_grid_ratio & ,grid%lu_index,ngrid%lu_index & ) ENDIF IF ( .TRUE. ) THEN CALL interp_mask_land_field ( & ( SIZE( grid%tdly , 1 )*SIZE( grid%tdly , 2 ) .GT. 1 ), & grid%tdly, & cids, cide, 1, 1, cjds, cjde, & cims, cime, 1, 1, cjms, cjme, & cips, cipe, 1, 1, cjps, cjpe, & ngrid%tdly, & nids, nide, 1, 1, njds, njde, & nims, nime, 1, 1, njms, njme, & nips, nipe, 1, 1, njps, njpe, & config_flags%shw, ngrid%imask_nostag, & .FALSE., .FALSE., & ngrid%i_parent_start, ngrid%j_parent_start, & ngrid%parent_grid_ratio, ngrid%parent_grid_ratio & ,grid%lu_index,ngrid%lu_index & ) ENDIF IF ( .TRUE. ) THEN CALL interp_mask_land_field ( & ( SIZE( grid%tlag , 1 )*SIZE( grid%tlag , 3 ) .GT. 1 ), & grid%tlag, & cids, cide, 1, config_flags%lagday, cjds, cjde, & cims, cime, 1, config_flags%lagday, cjms, cjme, & cips, cipe, 1, config_flags%lagday, cjps, cjpe, & ngrid%tlag, & nids, nide, 1, config_flags%lagday, njds, njde, & nims, nime, 1, config_flags%lagday, njms, njme, & nips, nipe, 1, config_flags%lagday, njps, njpe, & config_flags%shw, ngrid%imask_nostag, & .FALSE., .FALSE., & ngrid%i_parent_start, ngrid%j_parent_start, & ngrid%parent_grid_ratio, ngrid%parent_grid_ratio & ,grid%lu_index,ngrid%lu_index & ) ENDIF IF ( SIZE( grid%xland, 1 ) * SIZE( grid%xland, 2 ) .GT. 1 ) THEN CALL interp_fcnm ( & grid%xland, & cids, cide, 1, 1, cjds, cjde, & cims, cime, 1, 1, cjms, cjme, & cips, cipe, 1, 1, cjps, cjpe, & ngrid%xland, & nids, nide, 1, 1, njds, njde, & nims, nime, 1, 1, njms, njme, & nips, nipe, 1, 1, njps, njpe, & config_flags%shw, ngrid%imask_nostag, & .FALSE., .FALSE., & ngrid%i_parent_start, ngrid%j_parent_start, & ngrid%parent_grid_ratio, ngrid%parent_grid_ratio & ) ENDIF IF ( SIZE( grid%achfx, 1 ) * SIZE( grid%achfx, 2 ) .GT. 1 ) THEN CALL interp_fcn ( & grid%achfx, & cids, cide, 1, 1, cjds, cjde, & cims, cime, 1, 1, cjms, cjme, & cips, cipe, 1, 1, cjps, cjpe, & ngrid%achfx, & nids, nide, 1, 1, njds, njde, & nims, nime, 1, 1, njms, njme, & nips, nipe, 1, 1, njps, njpe, & config_flags%shw, ngrid%imask_nostag, & .FALSE., .FALSE., & ngrid%i_parent_start, ngrid%j_parent_start, & ngrid%parent_grid_ratio, ngrid%parent_grid_ratio & ) ENDIF IF ( SIZE( grid%aclhf, 1 ) * SIZE( grid%aclhf, 2 ) .GT. 1 ) THEN CALL interp_fcn ( & grid%aclhf, & cids, cide, 1, 1, cjds, cjde, & cims, cime, 1, 1, cjms, cjme, & cips, cipe, 1, 1, cjps, cjpe, & ngrid%aclhf, & nids, nide, 1, 1, njds, njde, & nims, nime, 1, 1, njms, njme, & nips, nipe, 1, 1, njps, njpe, & config_flags%shw, ngrid%imask_nostag, & .FALSE., .FALSE., & ngrid%i_parent_start, ngrid%j_parent_start, & ngrid%parent_grid_ratio, ngrid%parent_grid_ratio & ) ENDIF IF ( .TRUE. ) THEN CALL interp_mask_land_field ( & ( SIZE( grid%snowc , 1 )*SIZE( grid%snowc , 2 ) .GT. 1 ), & grid%snowc, & cids, cide, 1, 1, cjds, cjde, & cims, cime, 1, 1, cjms, cjme, & cips, cipe, 1, 1, cjps, cjpe, & ngrid%snowc, & nids, nide, 1, 1, njds, njde, & nims, nime, 1, 1, njms, njme, & nips, nipe, 1, 1, njps, njpe, & config_flags%shw, ngrid%imask_nostag, & .FALSE., .FALSE., & ngrid%i_parent_start, ngrid%j_parent_start, & ngrid%parent_grid_ratio, ngrid%parent_grid_ratio & ,grid%lu_index,ngrid%lu_index & ) ENDIF IF ( .TRUE. ) THEN CALL interp_mask_water_field ( & ( SIZE( grid%tml , 1 )*SIZE( grid%tml , 2 ) .GT. 1 ), & grid%tml, & cids, cide, 1, 1, cjds, cjde, & cims, cime, 1, 1, cjms, cjme, & cips, cipe, 1, 1, cjps, cjpe, & ngrid%tml, & nids, nide, 1, 1, njds, njde, & nims, nime, 1, 1, njms, njme, & nips, nipe, 1, 1, njps, njpe, & config_flags%shw, ngrid%imask_nostag, & .FALSE., .FALSE., & ngrid%i_parent_start, ngrid%j_parent_start, & ngrid%parent_grid_ratio, ngrid%parent_grid_ratio & ,grid%lu_index,ngrid%lu_index & ,grid%iswater,ngrid%iswater & ) ENDIF IF ( .TRUE. ) THEN CALL interp_mask_water_field ( & ( SIZE( grid%t0ml , 1 )*SIZE( grid%t0ml , 2 ) .GT. 1 ), & grid%t0ml, & cids, cide, 1, 1, cjds, cjde, & cims, cime, 1, 1, cjms, cjme, & cips, cipe, 1, 1, cjps, cjpe, & ngrid%t0ml, & nids, nide, 1, 1, njds, njde, & nims, nime, 1, 1, njms, njme, & nips, nipe, 1, 1, njps, njpe, & config_flags%shw, ngrid%imask_nostag, & .FALSE., .FALSE., & ngrid%i_parent_start, ngrid%j_parent_start, & ngrid%parent_grid_ratio, ngrid%parent_grid_ratio & ,grid%lu_index,ngrid%lu_index & ,grid%iswater,ngrid%iswater & ) ENDIF IF ( .TRUE. ) THEN CALL interp_mask_water_field ( & ( SIZE( grid%hml , 1 )*SIZE( grid%hml , 2 ) .GT. 1 ), & grid%hml, & cids, cide, 1, 1, cjds, cjde, & cims, cime, 1, 1, cjms, cjme, & cips, cipe, 1, 1, cjps, cjpe, & ngrid%hml, & nids, nide, 1, 1, njds, njde, & nims, nime, 1, 1, njms, njme, & nips, nipe, 1, 1, njps, njpe, & config_flags%shw, ngrid%imask_nostag, & .FALSE., .FALSE., & ngrid%i_parent_start, ngrid%j_parent_start, & ngrid%parent_grid_ratio, ngrid%parent_grid_ratio & ,grid%lu_index,ngrid%lu_index & ,grid%iswater,ngrid%iswater & ) ENDIF IF ( .TRUE. ) THEN CALL interp_mask_water_field ( & ( SIZE( grid%h0ml , 1 )*SIZE( grid%h0ml , 2 ) .GT. 1 ), & grid%h0ml, & cids, cide, 1, 1, cjds, cjde, & cims, cime, 1, 1, cjms, cjme, & cips, cipe, 1, 1, cjps, cjpe, & ngrid%h0ml, & nids, nide, 1, 1, njds, njde, & nims, nime, 1, 1, njms, njme, & nips, nipe, 1, 1, njps, njpe, & config_flags%shw, ngrid%imask_nostag, & .FALSE., .FALSE., & ngrid%i_parent_start, ngrid%j_parent_start, & ngrid%parent_grid_ratio, ngrid%parent_grid_ratio & ,grid%lu_index,ngrid%lu_index & ,grid%iswater,ngrid%iswater & ) ENDIF IF ( .TRUE. ) THEN CALL interp_mask_water_field ( & ( SIZE( grid%huml , 1 )*SIZE( grid%huml , 2 ) .GT. 1 ), & grid%huml, & cids, cide, 1, 1, cjds, cjde, & cims, cime, 1, 1, cjms, cjme, & cips, cipe, 1, 1, cjps, cjpe, & ngrid%huml, & nids, nide, 1, 1, njds, njde, & nims, nime, 1, 1, njms, njme, & nips, nipe, 1, 1, njps, njpe, & config_flags%shw, ngrid%imask_nostag, & .FALSE., .FALSE., & ngrid%i_parent_start, ngrid%j_parent_start, & ngrid%parent_grid_ratio, ngrid%parent_grid_ratio & ,grid%lu_index,ngrid%lu_index & ,grid%iswater,ngrid%iswater & ) ENDIF IF ( .TRUE. ) THEN CALL interp_mask_water_field ( & ( SIZE( grid%hvml , 1 )*SIZE( grid%hvml , 2 ) .GT. 1 ), & grid%hvml, & cids, cide, 1, 1, cjds, cjde, & cims, cime, 1, 1, cjms, cjme, & cips, cipe, 1, 1, cjps, cjpe, & ngrid%hvml, & nids, nide, 1, 1, njds, njde, & nims, nime, 1, 1, njms, njme, & nips, nipe, 1, 1, njps, njpe, & config_flags%shw, ngrid%imask_nostag, & .FALSE., .FALSE., & ngrid%i_parent_start, ngrid%j_parent_start, & ngrid%parent_grid_ratio, ngrid%parent_grid_ratio & ,grid%lu_index,ngrid%lu_index & ,grid%iswater,ngrid%iswater & ) ENDIF IF ( .TRUE. ) THEN CALL interp_mask_water_field ( & ( SIZE( grid%tmoml , 1 )*SIZE( grid%tmoml , 2 ) .GT. 1 ), & grid%tmoml, & cids, cide, 1, 1, cjds, cjde, & cims, cime, 1, 1, cjms, cjme, & cips, cipe, 1, 1, cjps, cjpe, & ngrid%tmoml, & nids, nide, 1, 1, njds, njde, & nims, nime, 1, 1, njms, njme, & nips, nipe, 1, 1, njps, njpe, & config_flags%shw, ngrid%imask_nostag, & .FALSE., .FALSE., & ngrid%i_parent_start, ngrid%j_parent_start, & ngrid%parent_grid_ratio, ngrid%parent_grid_ratio & ,grid%lu_index,ngrid%lu_index & ,grid%iswater,ngrid%iswater & ) ENDIF IF ( SIZE( grid%vertstrucc, 1 ) * SIZE( grid%vertstrucc, 3 ) .GT. 1 ) THEN CALL interp_fcn ( & grid%vertstrucc, & cids, cide, ckds, ckde, cjds, cjde, & cims, cime, ckms, ckme, cjms, cjme, & cips, cipe, ckps, MIN( (ckde-1), ckpe ), cjps, cjpe, & ngrid%vertstrucc, & nids, nide, nkds, nkde, njds, njde, & nims, nime, nkms, nkme, njms, njme, & nips, nipe, nkps, MIN( (nkde-1), nkpe ), njps, njpe, & config_flags%shw, ngrid%imask_nostag, & .FALSE., .FALSE., & ngrid%i_parent_start, ngrid%j_parent_start, & ngrid%parent_grid_ratio, ngrid%parent_grid_ratio & ) ENDIF IF ( SIZE( grid%vertstrucs, 1 ) * SIZE( grid%vertstrucs, 3 ) .GT. 1 ) THEN CALL interp_fcn ( & grid%vertstrucs, & cids, cide, ckds, ckde, cjds, cjde, & cims, cime, ckms, ckme, cjms, cjme, & cips, cipe, ckps, MIN( (ckde-1), ckpe ), cjps, cjpe, & ngrid%vertstrucs, & nids, nide, nkds, nkde, njds, njde, & nims, nime, nkms, nkme, njms, njme, & nips, nipe, nkps, MIN( (nkde-1), nkpe ), njps, njpe, & config_flags%shw, ngrid%imask_nostag, & .FALSE., .FALSE., & ngrid%i_parent_start, ngrid%j_parent_start, & ngrid%parent_grid_ratio, ngrid%parent_grid_ratio & ) ENDIF IF ( SIZE( grid%ru_tendf_stoch, 1 ) * SIZE( grid%ru_tendf_stoch, 3 ) .GT. 1 ) THEN CALL interp_fcn ( & grid%ru_tendf_stoch, & cids, cide, ckds, ckde, cjds, cjde, & cims, cime, ckms, ckme, cjms, cjme, & cips, cipe, ckps, MIN( (ckde-1), ckpe ), cjps, cjpe, & ngrid%ru_tendf_stoch, & nids, nide, nkds, nkde, njds, njde, & nims, nime, nkms, nkme, njms, njme, & nips, nipe, nkps, MIN( (nkde-1), nkpe ), njps, njpe, & config_flags%shw, ngrid%imask_xstag, & .TRUE., .FALSE., & ngrid%i_parent_start, ngrid%j_parent_start, & ngrid%parent_grid_ratio, ngrid%parent_grid_ratio & ) ENDIF IF ( SIZE( grid%rv_tendf_stoch, 1 ) * SIZE( grid%rv_tendf_stoch, 3 ) .GT. 1 ) THEN CALL interp_fcn ( & grid%rv_tendf_stoch, & cids, cide, ckds, ckde, cjds, cjde, & cims, cime, ckms, ckme, cjms, cjme, & cips, cipe, ckps, MIN( (ckde-1), ckpe ), cjps, cjpe, & ngrid%rv_tendf_stoch, & nids, nide, nkds, nkde, njds, njde, & nims, nime, nkms, nkme, njms, njme, & nips, nipe, nkps, MIN( (nkde-1), nkpe ), njps, njpe, & config_flags%shw, ngrid%imask_ystag, & .FALSE., .TRUE., & ngrid%i_parent_start, ngrid%j_parent_start, & ngrid%parent_grid_ratio, ngrid%parent_grid_ratio & ) ENDIF IF ( SIZE( grid%rt_tendf_stoch, 1 ) * SIZE( grid%rt_tendf_stoch, 3 ) .GT. 1 ) THEN CALL interp_fcn ( & grid%rt_tendf_stoch, & cids, cide, ckds, ckde, cjds, cjde, & cims, cime, ckms, ckme, cjms, cjme, & cips, cipe, ckps, MIN( (ckde-1), ckpe ), cjps, cjpe, & ngrid%rt_tendf_stoch, & nids, nide, nkds, nkde, njds, njde, & nims, nime, nkms, nkme, njms, njme, & nips, nipe, nkps, MIN( (nkde-1), nkpe ), njps, njpe, & config_flags%shw, ngrid%imask_nostag, & .FALSE., .FALSE., & ngrid%i_parent_start, ngrid%j_parent_start, & ngrid%parent_grid_ratio, ngrid%parent_grid_ratio & ) ENDIF IF ( SIZE( grid%landmask, 1 ) * SIZE( grid%landmask, 2 ) .GT. 1 ) THEN CALL interp_fcnm ( & grid%landmask, & cids, cide, 1, 1, cjds, cjde, & cims, cime, 1, 1, cjms, cjme, & cips, cipe, 1, 1, cjps, cjpe, & ngrid%landmask, & nids, nide, 1, 1, njds, njde, & nims, nime, 1, 1, njms, njme, & nips, nipe, 1, 1, njps, njpe, & config_flags%shw, ngrid%imask_nostag, & .FALSE., .FALSE., & ngrid%i_parent_start, ngrid%j_parent_start, & ngrid%parent_grid_ratio, ngrid%parent_grid_ratio & ) ENDIF IF ( .TRUE. ) THEN CALL interp_mask_water_field ( & ( SIZE( grid%sst , 1 )*SIZE( grid%sst , 2 ) .GT. 1 ), & grid%sst, & cids, cide, 1, 1, cjds, cjde, & cims, cime, 1, 1, cjms, cjme, & cips, cipe, 1, 1, cjps, cjpe, & ngrid%sst, & nids, nide, 1, 1, njds, njde, & nims, nime, 1, 1, njms, njme, & nips, nipe, 1, 1, njps, njpe, & config_flags%shw, ngrid%imask_nostag, & .FALSE., .FALSE., & ngrid%i_parent_start, ngrid%j_parent_start, & ngrid%parent_grid_ratio, ngrid%parent_grid_ratio & ,grid%lu_index,ngrid%lu_index & ,grid%iswater,ngrid%iswater & ) ENDIF DO itrace = PARAM_FIRST_SCALAR, num_tracer IF ( SIZE( tracer, 1 ) * SIZE( tracer, 3 ) .GT. 1 ) THEN CALL interp_fcn ( & tracer(grid%sm31,grid%sm32,grid%sm33,itrace), & cids, cide, ckds, ckde, cjds, cjde, & cims, cime, ckms, ckme, cjms, cjme, & cips, cipe, ckps, MIN( (ckde-1), ckpe ), cjps, cjpe, & ngrid%tracer(ngrid%sm31,ngrid%sm32,ngrid%sm33,itrace), & nids, nide, nkds, nkde, njds, njde, & nims, nime, nkms, nkme, njms, njme, & nips, nipe, nkps, MIN( (nkde-1), nkpe ), njps, njpe, & config_flags%shw, ngrid%imask_nostag, & .FALSE., .FALSE., & ngrid%i_parent_start, ngrid%j_parent_start, & ngrid%parent_grid_ratio, ngrid%parent_grid_ratio & ) ENDIF ENDDO RETURN END SUBROUTINE interp_domain_em_part2 SUBROUTINE feedback_nest_prep ( grid, config_flags & ,moist,moist_bxs,moist_bxe,moist_bys,moist_bye,moist_btxs,moist_btxe,moist_btys,moist_btye,dfi_moist,dfi_moist_bxs,dfi_moist_bxe, & dfi_moist_bys,dfi_moist_bye,dfi_moist_btxs,dfi_moist_btxe,dfi_moist_btys,dfi_moist_btye,scalar,scalar_bxs,scalar_bxe,scalar_bys, & scalar_bye,scalar_btxs,scalar_btxe,scalar_btys,scalar_btye,dfi_scalar,dfi_scalar_bxs,dfi_scalar_bxe,dfi_scalar_bys, & dfi_scalar_bye,dfi_scalar_btxs,dfi_scalar_btxe,dfi_scalar_btys,dfi_scalar_btye,ozmixm,aerosolc_1,aerosolc_2,fdda3d,fdda2d, & advh_t,advz_t,nba_mij,nba_rij,chem,tracer,tracer_bxs,tracer_bxe,tracer_bys,tracer_bye,tracer_btxs,tracer_btxe,tracer_btys, & tracer_btye & ) USE module_state_description USE module_domain, ONLY : domain, get_ijk_from_grid USE module_configure, ONLY : grid_config_rec_type USE module_dm, ONLY : ntasks, ntasks_x, ntasks_y, itrace, local_communicator, mytask USE module_comm_nesting_dm, ONLY : halo_interp_up_sub IMPLICIT NONE TYPE(domain), TARGET :: grid TYPE (grid_config_rec_type) :: config_flags real ,DIMENSION(grid%sm31:grid%em31,grid%sm32:grid%em32,grid%sm33:grid%em33,num_moist) :: moist real ,DIMENSION(grid%sm33:grid%em33,grid%sm32:grid%em32,grid%spec_bdy_width,num_moist) :: moist_bxs real ,DIMENSION(grid%sm33:grid%em33,grid%sm32:grid%em32,grid%spec_bdy_width,num_moist) :: moist_bxe real ,DIMENSION(grid%sm31:grid%em31,grid%sm32:grid%em32,grid%spec_bdy_width,num_moist) :: moist_bys real ,DIMENSION(grid%sm31:grid%em31,grid%sm32:grid%em32,grid%spec_bdy_width,num_moist) :: moist_bye real ,DIMENSION(grid%sm33:grid%em33,grid%sm32:grid%em32,grid%spec_bdy_width,num_moist) :: moist_btxs real ,DIMENSION(grid%sm33:grid%em33,grid%sm32:grid%em32,grid%spec_bdy_width,num_moist) :: moist_btxe real ,DIMENSION(grid%sm31:grid%em31,grid%sm32:grid%em32,grid%spec_bdy_width,num_moist) :: moist_btys real ,DIMENSION(grid%sm31:grid%em31,grid%sm32:grid%em32,grid%spec_bdy_width,num_moist) :: moist_btye real ,DIMENSION(grid%sm31:grid%em31,grid%sm32:grid%em32,grid%sm33:grid%em33,num_dfi_moist) :: dfi_moist real ,DIMENSION(grid%sm33:grid%em33,grid%sm32:grid%em32,grid%spec_bdy_width,num_dfi_moist) :: dfi_moist_bxs real ,DIMENSION(grid%sm33:grid%em33,grid%sm32:grid%em32,grid%spec_bdy_width,num_dfi_moist) :: dfi_moist_bxe real ,DIMENSION(grid%sm31:grid%em31,grid%sm32:grid%em32,grid%spec_bdy_width,num_dfi_moist) :: dfi_moist_bys real ,DIMENSION(grid%sm31:grid%em31,grid%sm32:grid%em32,grid%spec_bdy_width,num_dfi_moist) :: dfi_moist_bye real ,DIMENSION(grid%sm33:grid%em33,grid%sm32:grid%em32,grid%spec_bdy_width,num_dfi_moist) :: dfi_moist_btxs real ,DIMENSION(grid%sm33:grid%em33,grid%sm32:grid%em32,grid%spec_bdy_width,num_dfi_moist) :: dfi_moist_btxe real ,DIMENSION(grid%sm31:grid%em31,grid%sm32:grid%em32,grid%spec_bdy_width,num_dfi_moist) :: dfi_moist_btys real ,DIMENSION(grid%sm31:grid%em31,grid%sm32:grid%em32,grid%spec_bdy_width,num_dfi_moist) :: dfi_moist_btye real ,DIMENSION(grid%sm31:grid%em31,grid%sm32:grid%em32,grid%sm33:grid%em33,num_scalar) :: scalar real ,DIMENSION(grid%sm33:grid%em33,grid%sm32:grid%em32,grid%spec_bdy_width,num_scalar) :: scalar_bxs real ,DIMENSION(grid%sm33:grid%em33,grid%sm32:grid%em32,grid%spec_bdy_width,num_scalar) :: scalar_bxe real ,DIMENSION(grid%sm31:grid%em31,grid%sm32:grid%em32,grid%spec_bdy_width,num_scalar) :: scalar_bys real ,DIMENSION(grid%sm31:grid%em31,grid%sm32:grid%em32,grid%spec_bdy_width,num_scalar) :: scalar_bye real ,DIMENSION(grid%sm33:grid%em33,grid%sm32:grid%em32,grid%spec_bdy_width,num_scalar) :: scalar_btxs real ,DIMENSION(grid%sm33:grid%em33,grid%sm32:grid%em32,grid%spec_bdy_width,num_scalar) :: scalar_btxe real ,DIMENSION(grid%sm31:grid%em31,grid%sm32:grid%em32,grid%spec_bdy_width,num_scalar) :: scalar_btys real ,DIMENSION(grid%sm31:grid%em31,grid%sm32:grid%em32,grid%spec_bdy_width,num_scalar) :: scalar_btye real ,DIMENSION(grid%sm31:grid%em31,grid%sm32:grid%em32,grid%sm33:grid%em33,num_dfi_scalar) :: dfi_scalar real ,DIMENSION(grid%sm33:grid%em33,grid%sm32:grid%em32,grid%spec_bdy_width,num_dfi_scalar) :: dfi_scalar_bxs real ,DIMENSION(grid%sm33:grid%em33,grid%sm32:grid%em32,grid%spec_bdy_width,num_dfi_scalar) :: dfi_scalar_bxe real ,DIMENSION(grid%sm31:grid%em31,grid%sm32:grid%em32,grid%spec_bdy_width,num_dfi_scalar) :: dfi_scalar_bys real ,DIMENSION(grid%sm31:grid%em31,grid%sm32:grid%em32,grid%spec_bdy_width,num_dfi_scalar) :: dfi_scalar_bye real ,DIMENSION(grid%sm33:grid%em33,grid%sm32:grid%em32,grid%spec_bdy_width,num_dfi_scalar) :: dfi_scalar_btxs real ,DIMENSION(grid%sm33:grid%em33,grid%sm32:grid%em32,grid%spec_bdy_width,num_dfi_scalar) :: dfi_scalar_btxe real ,DIMENSION(grid%sm31:grid%em31,grid%sm32:grid%em32,grid%spec_bdy_width,num_dfi_scalar) :: dfi_scalar_btys real ,DIMENSION(grid%sm31:grid%em31,grid%sm32:grid%em32,grid%spec_bdy_width,num_dfi_scalar) :: dfi_scalar_btye real ,DIMENSION(grid%sm31:grid%em31,1:grid%levsiz,grid%sm33:grid%em33,num_ozmixm) :: ozmixm real ,DIMENSION(grid%sm31:grid%em31,1:grid%paerlev,grid%sm33:grid%em33,num_aerosolc) :: aerosolc_1 real ,DIMENSION(grid%sm31:grid%em31,1:grid%paerlev,grid%sm33:grid%em33,num_aerosolc) :: aerosolc_2 real ,DIMENSION(grid%sm31:grid%em31,grid%sm32:grid%em32,grid%sm33:grid%em33,num_fdda3d) :: fdda3d real ,DIMENSION(grid%sm31:grid%em31,1:1,grid%sm33:grid%em33,num_fdda2d) :: fdda2d real ,DIMENSION(grid%sm31:grid%em31,grid%sm32:grid%em32,grid%sm33:grid%em33,num_advh_t) :: advh_t real ,DIMENSION(grid%sm31:grid%em31,grid%sm32:grid%em32,grid%sm33:grid%em33,num_advz_t) :: advz_t real ,DIMENSION(grid%sm31:grid%em31,grid%sm32:grid%em32,grid%sm33:grid%em33,num_nba_mij) :: nba_mij real ,DIMENSION(grid%sm31:grid%em31,grid%sm32:grid%em32,grid%sm33:grid%em33,num_nba_rij) :: nba_rij real ,DIMENSION(grid%sm31:grid%em31,grid%sm32:grid%em32,grid%sm33:grid%em33,num_chem) :: chem real ,DIMENSION(grid%sm31:grid%em31,grid%sm32:grid%em32,grid%sm33:grid%em33,num_tracer) :: tracer real ,DIMENSION(grid%sm33:grid%em33,grid%sm32:grid%em32,grid%spec_bdy_width,num_tracer) :: tracer_bxs real ,DIMENSION(grid%sm33:grid%em33,grid%sm32:grid%em32,grid%spec_bdy_width,num_tracer) :: tracer_bxe real ,DIMENSION(grid%sm31:grid%em31,grid%sm32:grid%em32,grid%spec_bdy_width,num_tracer) :: tracer_bys real ,DIMENSION(grid%sm31:grid%em31,grid%sm32:grid%em32,grid%spec_bdy_width,num_tracer) :: tracer_bye real ,DIMENSION(grid%sm33:grid%em33,grid%sm32:grid%em32,grid%spec_bdy_width,num_tracer) :: tracer_btxs real ,DIMENSION(grid%sm33:grid%em33,grid%sm32:grid%em32,grid%spec_bdy_width,num_tracer) :: tracer_btxe real ,DIMENSION(grid%sm31:grid%em31,grid%sm32:grid%em32,grid%spec_bdy_width,num_tracer) :: tracer_btys real ,DIMENSION(grid%sm31:grid%em31,grid%sm32:grid%em32,grid%spec_bdy_width,num_tracer) :: tracer_btye INTEGER :: ids, ide, jds, jde, kds, kde, & ims, ime, jms, jme, kms, kme, & ips, ipe, jps, jpe, kps, kpe INTEGER idim1,idim2,idim3,idim4,idim5,idim6,idim7 INTEGER :: idum1, idum2 CALL get_ijk_from_grid ( grid , & ids, ide, jds, jde, kds, kde, & ims, ime, jms, jme, kms, kme, & ips, ipe, jps, jpe, kps, kpe ) CALL HALO_INTERP_UP_sub ( grid, & config_flags, & num_moist, & moist, & num_dfi_moist, & dfi_moist, & num_scalar, & scalar, & num_dfi_scalar, & dfi_scalar, & num_tracer, & tracer, & local_communicator, & mytask, ntasks, ntasks_x, ntasks_y, & ids, ide, jds, jde, kds, kde, & ims, ime, jms, jme, kms, kme, & ips, ipe, jps, jpe, kps, kpe ) END SUBROUTINE feedback_nest_prep SUBROUTINE feedback_domain_em_part1 ( grid, ngrid, config_flags & ,moist,moist_bxs,moist_bxe,moist_bys,moist_bye,moist_btxs,moist_btxe,moist_btys,moist_btye,dfi_moist,dfi_moist_bxs,dfi_moist_bxe, & dfi_moist_bys,dfi_moist_bye,dfi_moist_btxs,dfi_moist_btxe,dfi_moist_btys,dfi_moist_btye,scalar,scalar_bxs,scalar_bxe,scalar_bys, & scalar_bye,scalar_btxs,scalar_btxe,scalar_btys,scalar_btye,dfi_scalar,dfi_scalar_bxs,dfi_scalar_bxe,dfi_scalar_bys, & dfi_scalar_bye,dfi_scalar_btxs,dfi_scalar_btxe,dfi_scalar_btys,dfi_scalar_btye,ozmixm,aerosolc_1,aerosolc_2,fdda3d,fdda2d, & advh_t,advz_t,nba_mij,nba_rij,chem,tracer,tracer_bxs,tracer_bxe,tracer_bys,tracer_bye,tracer_btxs,tracer_btxe,tracer_btys, & tracer_btye & ) 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 IMPLICIT NONE TYPE(domain), POINTER :: grid TYPE(domain), POINTER :: ngrid real ,DIMENSION(grid%sm31:grid%em31,grid%sm32:grid%em32,grid%sm33:grid%em33,num_moist) :: moist real ,DIMENSION(grid%sm33:grid%em33,grid%sm32:grid%em32,grid%spec_bdy_width,num_moist) :: moist_bxs real ,DIMENSION(grid%sm33:grid%em33,grid%sm32:grid%em32,grid%spec_bdy_width,num_moist) :: moist_bxe real ,DIMENSION(grid%sm31:grid%em31,grid%sm32:grid%em32,grid%spec_bdy_width,num_moist) :: moist_bys real ,DIMENSION(grid%sm31:grid%em31,grid%sm32:grid%em32,grid%spec_bdy_width,num_moist) :: moist_bye real ,DIMENSION(grid%sm33:grid%em33,grid%sm32:grid%em32,grid%spec_bdy_width,num_moist) :: moist_btxs real ,DIMENSION(grid%sm33:grid%em33,grid%sm32:grid%em32,grid%spec_bdy_width,num_moist) :: moist_btxe real ,DIMENSION(grid%sm31:grid%em31,grid%sm32:grid%em32,grid%spec_bdy_width,num_moist) :: moist_btys real ,DIMENSION(grid%sm31:grid%em31,grid%sm32:grid%em32,grid%spec_bdy_width,num_moist) :: moist_btye real ,DIMENSION(grid%sm31:grid%em31,grid%sm32:grid%em32,grid%sm33:grid%em33,num_dfi_moist) :: dfi_moist real ,DIMENSION(grid%sm33:grid%em33,grid%sm32:grid%em32,grid%spec_bdy_width,num_dfi_moist) :: dfi_moist_bxs real ,DIMENSION(grid%sm33:grid%em33,grid%sm32:grid%em32,grid%spec_bdy_width,num_dfi_moist) :: dfi_moist_bxe real ,DIMENSION(grid%sm31:grid%em31,grid%sm32:grid%em32,grid%spec_bdy_width,num_dfi_moist) :: dfi_moist_bys real ,DIMENSION(grid%sm31:grid%em31,grid%sm32:grid%em32,grid%spec_bdy_width,num_dfi_moist) :: dfi_moist_bye real ,DIMENSION(grid%sm33:grid%em33,grid%sm32:grid%em32,grid%spec_bdy_width,num_dfi_moist) :: dfi_moist_btxs real ,DIMENSION(grid%sm33:grid%em33,grid%sm32:grid%em32,grid%spec_bdy_width,num_dfi_moist) :: dfi_moist_btxe real ,DIMENSION(grid%sm31:grid%em31,grid%sm32:grid%em32,grid%spec_bdy_width,num_dfi_moist) :: dfi_moist_btys real ,DIMENSION(grid%sm31:grid%em31,grid%sm32:grid%em32,grid%spec_bdy_width,num_dfi_moist) :: dfi_moist_btye real ,DIMENSION(grid%sm31:grid%em31,grid%sm32:grid%em32,grid%sm33:grid%em33,num_scalar) :: scalar real ,DIMENSION(grid%sm33:grid%em33,grid%sm32:grid%em32,grid%spec_bdy_width,num_scalar) :: scalar_bxs real ,DIMENSION(grid%sm33:grid%em33,grid%sm32:grid%em32,grid%spec_bdy_width,num_scalar) :: scalar_bxe real ,DIMENSION(grid%sm31:grid%em31,grid%sm32:grid%em32,grid%spec_bdy_width,num_scalar) :: scalar_bys real ,DIMENSION(grid%sm31:grid%em31,grid%sm32:grid%em32,grid%spec_bdy_width,num_scalar) :: scalar_bye real ,DIMENSION(grid%sm33:grid%em33,grid%sm32:grid%em32,grid%spec_bdy_width,num_scalar) :: scalar_btxs real ,DIMENSION(grid%sm33:grid%em33,grid%sm32:grid%em32,grid%spec_bdy_width,num_scalar) :: scalar_btxe real ,DIMENSION(grid%sm31:grid%em31,grid%sm32:grid%em32,grid%spec_bdy_width,num_scalar) :: scalar_btys real ,DIMENSION(grid%sm31:grid%em31,grid%sm32:grid%em32,grid%spec_bdy_width,num_scalar) :: scalar_btye real ,DIMENSION(grid%sm31:grid%em31,grid%sm32:grid%em32,grid%sm33:grid%em33,num_dfi_scalar) :: dfi_scalar real ,DIMENSION(grid%sm33:grid%em33,grid%sm32:grid%em32,grid%spec_bdy_width,num_dfi_scalar) :: dfi_scalar_bxs real ,DIMENSION(grid%sm33:grid%em33,grid%sm32:grid%em32,grid%spec_bdy_width,num_dfi_scalar) :: dfi_scalar_bxe real ,DIMENSION(grid%sm31:grid%em31,grid%sm32:grid%em32,grid%spec_bdy_width,num_dfi_scalar) :: dfi_scalar_bys real ,DIMENSION(grid%sm31:grid%em31,grid%sm32:grid%em32,grid%spec_bdy_width,num_dfi_scalar) :: dfi_scalar_bye real ,DIMENSION(grid%sm33:grid%em33,grid%sm32:grid%em32,grid%spec_bdy_width,num_dfi_scalar) :: dfi_scalar_btxs real ,DIMENSION(grid%sm33:grid%em33,grid%sm32:grid%em32,grid%spec_bdy_width,num_dfi_scalar) :: dfi_scalar_btxe real ,DIMENSION(grid%sm31:grid%em31,grid%sm32:grid%em32,grid%spec_bdy_width,num_dfi_scalar) :: dfi_scalar_btys real ,DIMENSION(grid%sm31:grid%em31,grid%sm32:grid%em32,grid%spec_bdy_width,num_dfi_scalar) :: dfi_scalar_btye real ,DIMENSION(grid%sm31:grid%em31,1:grid%levsiz,grid%sm33:grid%em33,num_ozmixm) :: ozmixm real ,DIMENSION(grid%sm31:grid%em31,1:grid%paerlev,grid%sm33:grid%em33,num_aerosolc) :: aerosolc_1 real ,DIMENSION(grid%sm31:grid%em31,1:grid%paerlev,grid%sm33:grid%em33,num_aerosolc) :: aerosolc_2 real ,DIMENSION(grid%sm31:grid%em31,grid%sm32:grid%em32,grid%sm33:grid%em33,num_fdda3d) :: fdda3d real ,DIMENSION(grid%sm31:grid%em31,1:1,grid%sm33:grid%em33,num_fdda2d) :: fdda2d real ,DIMENSION(grid%sm31:grid%em31,grid%sm32:grid%em32,grid%sm33:grid%em33,num_advh_t) :: advh_t real ,DIMENSION(grid%sm31:grid%em31,grid%sm32:grid%em32,grid%sm33:grid%em33,num_advz_t) :: advz_t real ,DIMENSION(grid%sm31:grid%em31,grid%sm32:grid%em32,grid%sm33:grid%em33,num_nba_mij) :: nba_mij real ,DIMENSION(grid%sm31:grid%em31,grid%sm32:grid%em32,grid%sm33:grid%em33,num_nba_rij) :: nba_rij real ,DIMENSION(grid%sm31:grid%em31,grid%sm32:grid%em32,grid%sm33:grid%em33,num_chem) :: chem real ,DIMENSION(grid%sm31:grid%em31,grid%sm32:grid%em32,grid%sm33:grid%em33,num_tracer) :: tracer real ,DIMENSION(grid%sm33:grid%em33,grid%sm32:grid%em32,grid%spec_bdy_width,num_tracer) :: tracer_bxs real ,DIMENSION(grid%sm33:grid%em33,grid%sm32:grid%em32,grid%spec_bdy_width,num_tracer) :: tracer_bxe real ,DIMENSION(grid%sm31:grid%em31,grid%sm32:grid%em32,grid%spec_bdy_width,num_tracer) :: tracer_bys real ,DIMENSION(grid%sm31:grid%em31,grid%sm32:grid%em32,grid%spec_bdy_width,num_tracer) :: tracer_bye real ,DIMENSION(grid%sm33:grid%em33,grid%sm32:grid%em32,grid%spec_bdy_width,num_tracer) :: tracer_btxs real ,DIMENSION(grid%sm33:grid%em33,grid%sm32:grid%em32,grid%spec_bdy_width,num_tracer) :: tracer_btxe real ,DIMENSION(grid%sm31:grid%em31,grid%sm32:grid%em32,grid%spec_bdy_width,num_tracer) :: tracer_btys real ,DIMENSION(grid%sm31:grid%em31,grid%sm32:grid%em32,grid%spec_bdy_width,num_tracer) :: tracer_btye 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(500) 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 INTERFACE SUBROUTINE feedback_nest_prep ( grid, config_flags & ,moist,moist_bxs,moist_bxe,moist_bys,moist_bye,moist_btxs,moist_btxe,moist_btys,moist_btye,dfi_moist,dfi_moist_bxs,dfi_moist_bxe, & dfi_moist_bys,dfi_moist_bye,dfi_moist_btxs,dfi_moist_btxe,dfi_moist_btys,dfi_moist_btye,scalar,scalar_bxs,scalar_bxe,scalar_bys, & scalar_bye,scalar_btxs,scalar_btxe,scalar_btys,scalar_btye,dfi_scalar,dfi_scalar_bxs,dfi_scalar_bxe,dfi_scalar_bys, & dfi_scalar_bye,dfi_scalar_btxs,dfi_scalar_btxe,dfi_scalar_btys,dfi_scalar_btye,ozmixm,aerosolc_1,aerosolc_2,fdda3d,fdda2d, & advh_t,advz_t,nba_mij,nba_rij,chem,tracer,tracer_bxs,tracer_bxe,tracer_bys,tracer_bye,tracer_btxs,tracer_btxe,tracer_btys, & tracer_btye & ) 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 real ,DIMENSION(grid%sm31:grid%em31,grid%sm32:grid%em32,grid%sm33:grid%em33,num_moist) :: moist real ,DIMENSION(grid%sm33:grid%em33,grid%sm32:grid%em32,grid%spec_bdy_width,num_moist) :: moist_bxs real ,DIMENSION(grid%sm33:grid%em33,grid%sm32:grid%em32,grid%spec_bdy_width,num_moist) :: moist_bxe real ,DIMENSION(grid%sm31:grid%em31,grid%sm32:grid%em32,grid%spec_bdy_width,num_moist) :: moist_bys real ,DIMENSION(grid%sm31:grid%em31,grid%sm32:grid%em32,grid%spec_bdy_width,num_moist) :: moist_bye real ,DIMENSION(grid%sm33:grid%em33,grid%sm32:grid%em32,grid%spec_bdy_width,num_moist) :: moist_btxs real ,DIMENSION(grid%sm33:grid%em33,grid%sm32:grid%em32,grid%spec_bdy_width,num_moist) :: moist_btxe real ,DIMENSION(grid%sm31:grid%em31,grid%sm32:grid%em32,grid%spec_bdy_width,num_moist) :: moist_btys real ,DIMENSION(grid%sm31:grid%em31,grid%sm32:grid%em32,grid%spec_bdy_width,num_moist) :: moist_btye real ,DIMENSION(grid%sm31:grid%em31,grid%sm32:grid%em32,grid%sm33:grid%em33,num_dfi_moist) :: dfi_moist real ,DIMENSION(grid%sm33:grid%em33,grid%sm32:grid%em32,grid%spec_bdy_width,num_dfi_moist) :: dfi_moist_bxs real ,DIMENSION(grid%sm33:grid%em33,grid%sm32:grid%em32,grid%spec_bdy_width,num_dfi_moist) :: dfi_moist_bxe real ,DIMENSION(grid%sm31:grid%em31,grid%sm32:grid%em32,grid%spec_bdy_width,num_dfi_moist) :: dfi_moist_bys real ,DIMENSION(grid%sm31:grid%em31,grid%sm32:grid%em32,grid%spec_bdy_width,num_dfi_moist) :: dfi_moist_bye real ,DIMENSION(grid%sm33:grid%em33,grid%sm32:grid%em32,grid%spec_bdy_width,num_dfi_moist) :: dfi_moist_btxs real ,DIMENSION(grid%sm33:grid%em33,grid%sm32:grid%em32,grid%spec_bdy_width,num_dfi_moist) :: dfi_moist_btxe real ,DIMENSION(grid%sm31:grid%em31,grid%sm32:grid%em32,grid%spec_bdy_width,num_dfi_moist) :: dfi_moist_btys real ,DIMENSION(grid%sm31:grid%em31,grid%sm32:grid%em32,grid%spec_bdy_width,num_dfi_moist) :: dfi_moist_btye real ,DIMENSION(grid%sm31:grid%em31,grid%sm32:grid%em32,grid%sm33:grid%em33,num_scalar) :: scalar real ,DIMENSION(grid%sm33:grid%em33,grid%sm32:grid%em32,grid%spec_bdy_width,num_scalar) :: scalar_bxs real ,DIMENSION(grid%sm33:grid%em33,grid%sm32:grid%em32,grid%spec_bdy_width,num_scalar) :: scalar_bxe real ,DIMENSION(grid%sm31:grid%em31,grid%sm32:grid%em32,grid%spec_bdy_width,num_scalar) :: scalar_bys real ,DIMENSION(grid%sm31:grid%em31,grid%sm32:grid%em32,grid%spec_bdy_width,num_scalar) :: scalar_bye real ,DIMENSION(grid%sm33:grid%em33,grid%sm32:grid%em32,grid%spec_bdy_width,num_scalar) :: scalar_btxs real ,DIMENSION(grid%sm33:grid%em33,grid%sm32:grid%em32,grid%spec_bdy_width,num_scalar) :: scalar_btxe real ,DIMENSION(grid%sm31:grid%em31,grid%sm32:grid%em32,grid%spec_bdy_width,num_scalar) :: scalar_btys real ,DIMENSION(grid%sm31:grid%em31,grid%sm32:grid%em32,grid%spec_bdy_width,num_scalar) :: scalar_btye real ,DIMENSION(grid%sm31:grid%em31,grid%sm32:grid%em32,grid%sm33:grid%em33,num_dfi_scalar) :: dfi_scalar real ,DIMENSION(grid%sm33:grid%em33,grid%sm32:grid%em32,grid%spec_bdy_width,num_dfi_scalar) :: dfi_scalar_bxs real ,DIMENSION(grid%sm33:grid%em33,grid%sm32:grid%em32,grid%spec_bdy_width,num_dfi_scalar) :: dfi_scalar_bxe real ,DIMENSION(grid%sm31:grid%em31,grid%sm32:grid%em32,grid%spec_bdy_width,num_dfi_scalar) :: dfi_scalar_bys real ,DIMENSION(grid%sm31:grid%em31,grid%sm32:grid%em32,grid%spec_bdy_width,num_dfi_scalar) :: dfi_scalar_bye real ,DIMENSION(grid%sm33:grid%em33,grid%sm32:grid%em32,grid%spec_bdy_width,num_dfi_scalar) :: dfi_scalar_btxs real ,DIMENSION(grid%sm33:grid%em33,grid%sm32:grid%em32,grid%spec_bdy_width,num_dfi_scalar) :: dfi_scalar_btxe real ,DIMENSION(grid%sm31:grid%em31,grid%sm32:grid%em32,grid%spec_bdy_width,num_dfi_scalar) :: dfi_scalar_btys real ,DIMENSION(grid%sm31:grid%em31,grid%sm32:grid%em32,grid%spec_bdy_width,num_dfi_scalar) :: dfi_scalar_btye real ,DIMENSION(grid%sm31:grid%em31,1:grid%levsiz,grid%sm33:grid%em33,num_ozmixm) :: ozmixm real ,DIMENSION(grid%sm31:grid%em31,1:grid%paerlev,grid%sm33:grid%em33,num_aerosolc) :: aerosolc_1 real ,DIMENSION(grid%sm31:grid%em31,1:grid%paerlev,grid%sm33:grid%em33,num_aerosolc) :: aerosolc_2 real ,DIMENSION(grid%sm31:grid%em31,grid%sm32:grid%em32,grid%sm33:grid%em33,num_fdda3d) :: fdda3d real ,DIMENSION(grid%sm31:grid%em31,1:1,grid%sm33:grid%em33,num_fdda2d) :: fdda2d real ,DIMENSION(grid%sm31:grid%em31,grid%sm32:grid%em32,grid%sm33:grid%em33,num_advh_t) :: advh_t real ,DIMENSION(grid%sm31:grid%em31,grid%sm32:grid%em32,grid%sm33:grid%em33,num_advz_t) :: advz_t real ,DIMENSION(grid%sm31:grid%em31,grid%sm32:grid%em32,grid%sm33:grid%em33,num_nba_mij) :: nba_mij real ,DIMENSION(grid%sm31:grid%em31,grid%sm32:grid%em32,grid%sm33:grid%em33,num_nba_rij) :: nba_rij real ,DIMENSION(grid%sm31:grid%em31,grid%sm32:grid%em32,grid%sm33:grid%em33,num_chem) :: chem real ,DIMENSION(grid%sm31:grid%em31,grid%sm32:grid%em32,grid%sm33:grid%em33,num_tracer) :: tracer real ,DIMENSION(grid%sm33:grid%em33,grid%sm32:grid%em32,grid%spec_bdy_width,num_tracer) :: tracer_bxs real ,DIMENSION(grid%sm33:grid%em33,grid%sm32:grid%em32,grid%spec_bdy_width,num_tracer) :: tracer_bxe real ,DIMENSION(grid%sm31:grid%em31,grid%sm32:grid%em32,grid%spec_bdy_width,num_tracer) :: tracer_bys real ,DIMENSION(grid%sm31:grid%em31,grid%sm32:grid%em32,grid%spec_bdy_width,num_tracer) :: tracer_bye real ,DIMENSION(grid%sm33:grid%em33,grid%sm32:grid%em32,grid%spec_bdy_width,num_tracer) :: tracer_btxs real ,DIMENSION(grid%sm33:grid%em33,grid%sm32:grid%em32,grid%spec_bdy_width,num_tracer) :: tracer_btxe real ,DIMENSION(grid%sm31:grid%em31,grid%sm32:grid%em32,grid%spec_bdy_width,num_tracer) :: tracer_btys real ,DIMENSION(grid%sm31:grid%em31,grid%sm32:grid%em32,grid%spec_bdy_width,num_tracer) :: tracer_btye END SUBROUTINE feedback_nest_prep END INTERFACE CALL wrf_get_dm_communicator ( local_comm ) CALL wrf_get_myproc( myproc ) CALL wrf_get_nproc( nproc ) CALL get_ijk_from_grid ( grid , & cids, cide, cjds, cjde, ckds, ckde, & cims, cime, cjms, cjme, ckms, ckme, & cips, cipe, cjps, cjpe, ckps, ckpe ) 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 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 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 & ,grid%moist,grid%moist_bxs,grid%moist_bxe,grid%moist_bys,grid%moist_bye,grid%moist_btxs,grid%moist_btxe,grid%moist_btys, & grid%moist_btye,grid%dfi_moist,grid%dfi_moist_bxs,grid%dfi_moist_bxe,grid%dfi_moist_bys,grid%dfi_moist_bye,grid%dfi_moist_btxs, & grid%dfi_moist_btxe,grid%dfi_moist_btys,grid%dfi_moist_btye,grid%scalar,grid%scalar_bxs,grid%scalar_bxe,grid%scalar_bys, & grid%scalar_bye,grid%scalar_btxs,grid%scalar_btxe,grid%scalar_btys,grid%scalar_btye,grid%dfi_scalar,grid%dfi_scalar_bxs, & grid%dfi_scalar_bxe,grid%dfi_scalar_bys,grid%dfi_scalar_bye,grid%dfi_scalar_btxs,grid%dfi_scalar_btxe,grid%dfi_scalar_btys, & grid%dfi_scalar_btye,grid%ozmixm,grid%aerosolc_1,grid%aerosolc_2,grid%fdda3d,grid%fdda2d,grid%advh_t,grid%advz_t,grid%nba_mij, & grid%nba_rij,grid%chem,grid%tracer,grid%tracer_bxs,grid%tracer_bxe,grid%tracer_bys,grid%tracer_bye,grid%tracer_btxs, & grid%tracer_btxe,grid%tracer_btys,grid%tracer_btye & ) grid => xgrid CALL set_scalar_indices_from_config ( grid%id , idum1 , idum2 ) IF ( SIZE( grid%lu_index, 1 ) * SIZE( grid%lu_index, 2 ) .GT. 1 ) THEN CALL copy_fcnm ( & grid%lu_index, & cids, cide, 1, 1, cjds, cjde, & cims, cime, 1, 1, cjms, cjme, & cips, cipe, 1, 1, cjps, cjpe, & ngrid%lu_index, & nids, nide, 1, 1, njds, njde, & nims, nime, 1, 1, njms, njme, & nips, nipe, 1, 1, njps, njpe, & config_flags%shw, ngrid%imask_nostag, & .FALSE., .FALSE., & ngrid%i_parent_start, ngrid%j_parent_start, & ngrid%parent_grid_ratio, ngrid%parent_grid_ratio & ) ENDIF IF ( SIZE( grid%u_2, 1 ) * SIZE( grid%u_2, 3 ) .GT. 1 ) THEN CALL copy_fcn ( & grid%u_2, & cids, cide, ckds, ckde, cjds, cjde, & cims, cime, ckms, ckme, cjms, cjme, & cips, cipe, ckps, MIN( (ckde-1), ckpe ), cjps, cjpe, & ngrid%u_2, & nids, nide, nkds, nkde, njds, njde, & nims, nime, nkms, nkme, njms, njme, & nips, nipe, nkps, MIN( (nkde-1), nkpe ), njps, njpe, & config_flags%shw, ngrid%imask_xstag, & .TRUE., .FALSE., & ngrid%i_parent_start, ngrid%j_parent_start, & ngrid%parent_grid_ratio, ngrid%parent_grid_ratio & ) ENDIF IF ( SIZE( grid%v_2, 1 ) * SIZE( grid%v_2, 3 ) .GT. 1 ) THEN CALL copy_fcn ( & grid%v_2, & cids, cide, ckds, ckde, cjds, cjde, & cims, cime, ckms, ckme, cjms, cjme, & cips, cipe, ckps, MIN( (ckde-1), ckpe ), cjps, cjpe, & ngrid%v_2, & nids, nide, nkds, nkde, njds, njde, & nims, nime, nkms, nkme, njms, njme, & nips, nipe, nkps, MIN( (nkde-1), nkpe ), njps, njpe, & config_flags%shw, ngrid%imask_ystag, & .FALSE., .TRUE., & ngrid%i_parent_start, ngrid%j_parent_start, & ngrid%parent_grid_ratio, ngrid%parent_grid_ratio & ) ENDIF IF ( SIZE( grid%w_2, 1 ) * SIZE( grid%w_2, 3 ) .GT. 1 ) THEN CALL copy_fcn ( & grid%w_2, & cids, cide, ckds, ckde, cjds, cjde, & cims, cime, ckms, ckme, cjms, cjme, & cips, cipe, ckps, MIN( ckde, ckpe ), cjps, cjpe, & ngrid%w_2, & nids, nide, nkds, nkde, njds, njde, & nims, nime, nkms, nkme, njms, njme, & nips, nipe, nkps, MIN( nkde, nkpe ), njps, njpe, & config_flags%shw, ngrid%imask_nostag, & .FALSE., .FALSE., & ngrid%i_parent_start, ngrid%j_parent_start, & ngrid%parent_grid_ratio, ngrid%parent_grid_ratio & ) ENDIF IF ( SIZE( grid%ph_2, 1 ) * SIZE( grid%ph_2, 3 ) .GT. 1 ) THEN CALL copy_fcn ( & grid%ph_2, & cids, cide, ckds, ckde, cjds, cjde, & cims, cime, ckms, ckme, cjms, cjme, & cips, cipe, ckps, MIN( ckde, ckpe ), cjps, cjpe, & ngrid%ph_2, & nids, nide, nkds, nkde, njds, njde, & nims, nime, nkms, nkme, njms, njme, & nips, nipe, nkps, MIN( nkde, nkpe ), njps, njpe, & config_flags%shw, ngrid%imask_nostag, & .FALSE., .FALSE., & ngrid%i_parent_start, ngrid%j_parent_start, & ngrid%parent_grid_ratio, ngrid%parent_grid_ratio & ) ENDIF IF ( SIZE( grid%phb, 1 ) * SIZE( grid%phb, 3 ) .GT. 1 ) THEN CALL copy_fcn ( & grid%phb, & cids, cide, ckds, ckde, cjds, cjde, & cims, cime, ckms, ckme, cjms, cjme, & cips, cipe, ckps, MIN( ckde, ckpe ), cjps, cjpe, & ngrid%phb, & nids, nide, nkds, nkde, njds, njde, & nims, nime, nkms, nkme, njms, njme, & nips, nipe, nkps, MIN( nkde, nkpe ), njps, njpe, & config_flags%shw, ngrid%imask_nostag, & .FALSE., .FALSE., & ngrid%i_parent_start, ngrid%j_parent_start, & ngrid%parent_grid_ratio, ngrid%parent_grid_ratio & ) ENDIF IF ( SIZE( grid%t_2, 1 ) * SIZE( grid%t_2, 3 ) .GT. 1 ) THEN CALL copy_fcn ( & grid%t_2, & cids, cide, ckds, ckde, cjds, cjde, & cims, cime, ckms, ckme, cjms, cjme, & cips, cipe, ckps, MIN( (ckde-1), ckpe ), cjps, cjpe, & ngrid%t_2, & nids, nide, nkds, nkde, njds, njde, & nims, nime, nkms, nkme, njms, njme, & nips, nipe, nkps, MIN( (nkde-1), nkpe ), njps, njpe, & config_flags%shw, ngrid%imask_nostag, & .FALSE., .FALSE., & ngrid%i_parent_start, ngrid%j_parent_start, & ngrid%parent_grid_ratio, ngrid%parent_grid_ratio & ) ENDIF IF ( SIZE( grid%mu_2, 1 ) * SIZE( grid%mu_2, 2 ) .GT. 1 ) THEN CALL copy_fcn ( & grid%mu_2, & cids, cide, 1, 1, cjds, cjde, & cims, cime, 1, 1, cjms, cjme, & cips, cipe, 1, 1, cjps, cjpe, & ngrid%mu_2, & nids, nide, 1, 1, njds, njde, & nims, nime, 1, 1, njms, njme, & nips, nipe, 1, 1, njps, njpe, & config_flags%shw, ngrid%imask_nostag, & .FALSE., .FALSE., & ngrid%i_parent_start, ngrid%j_parent_start, & ngrid%parent_grid_ratio, ngrid%parent_grid_ratio & ) ENDIF IF ( SIZE( grid%mub, 1 ) * SIZE( grid%mub, 2 ) .GT. 1 ) THEN CALL copy_fcn ( & grid%mub, & cids, cide, 1, 1, cjds, cjde, & cims, cime, 1, 1, cjms, cjme, & cips, cipe, 1, 1, cjps, cjpe, & ngrid%mub, & nids, nide, 1, 1, njds, njde, & nims, nime, 1, 1, njms, njme, & nips, nipe, 1, 1, njps, njpe, & config_flags%shw, ngrid%imask_nostag, & .FALSE., .FALSE., & ngrid%i_parent_start, ngrid%j_parent_start, & ngrid%parent_grid_ratio, ngrid%parent_grid_ratio & ) ENDIF IF ( SIZE( grid%nest_pos, 1 ) * SIZE( grid%nest_pos, 2 ) .GT. 1 ) THEN CALL mark_domain ( & grid%nest_pos, & cids, cide, 1, 1, cjds, cjde, & cims, cime, 1, 1, cjms, cjme, & cips, cipe, 1, 1, cjps, cjpe, & ngrid%nest_pos, & nids, nide, 1, 1, njds, njde, & nims, nime, 1, 1, njms, njme, & nips, nipe, 1, 1, njps, njpe, & config_flags%shw, ngrid%imask_nostag, & .FALSE., .FALSE., & ngrid%i_parent_start, ngrid%j_parent_start, & ngrid%parent_grid_ratio, ngrid%parent_grid_ratio & ) ENDIF IF ( SIZE( grid%nest_mask, 1 ) * SIZE( grid%nest_mask, 2 ) .GT. 1 ) THEN CALL mark_domain ( & grid%nest_mask, & cids, cide, 1, 1, cjds, cjde, & cims, cime, 1, 1, cjms, cjme, & cips, cipe, 1, 1, cjps, cjpe, & ngrid%nest_mask, & nids, nide, 1, 1, njds, njde, & nims, nime, 1, 1, njms, njme, & nips, nipe, 1, 1, njps, njpe, & config_flags%shw, ngrid%imask_nostag, & .FALSE., .FALSE., & ngrid%i_parent_start, ngrid%j_parent_start, & ngrid%parent_grid_ratio, ngrid%parent_grid_ratio & ) ENDIF IF ( SIZE( grid%alb, 1 ) * SIZE( grid%alb, 3 ) .GT. 1 ) THEN CALL copy_fcn ( & grid%alb, & cids, cide, ckds, ckde, cjds, cjde, & cims, cime, ckms, ckme, cjms, cjme, & cips, cipe, ckps, MIN( (ckde-1), ckpe ), cjps, cjpe, & ngrid%alb, & nids, nide, nkds, nkde, njds, njde, & nims, nime, nkms, nkme, njms, njme, & nips, nipe, nkps, MIN( (nkde-1), nkpe ), njps, njpe, & config_flags%shw, ngrid%imask_nostag, & .FALSE., .FALSE., & ngrid%i_parent_start, ngrid%j_parent_start, & ngrid%parent_grid_ratio, ngrid%parent_grid_ratio & ) ENDIF IF ( SIZE( grid%pb, 1 ) * SIZE( grid%pb, 3 ) .GT. 1 ) THEN CALL copy_fcn ( & grid%pb, & cids, cide, ckds, ckde, cjds, cjde, & cims, cime, ckms, ckme, cjms, cjme, & cips, cipe, ckps, MIN( (ckde-1), ckpe ), cjps, cjpe, & ngrid%pb, & nids, nide, nkds, nkde, njds, njde, & nims, nime, nkms, nkme, njms, njme, & nips, nipe, nkps, MIN( (nkde-1), nkpe ), njps, njpe, & config_flags%shw, ngrid%imask_nostag, & .FALSE., .FALSE., & ngrid%i_parent_start, ngrid%j_parent_start, & ngrid%parent_grid_ratio, ngrid%parent_grid_ratio & ) ENDIF DO itrace = PARAM_FIRST_SCALAR, num_moist IF ( SIZE( moist, 1 ) * SIZE( moist, 3 ) .GT. 1 ) THEN CALL copy_fcn ( & moist(grid%sm31,grid%sm32,grid%sm33,itrace), & cids, cide, ckds, ckde, cjds, cjde, & cims, cime, ckms, ckme, cjms, cjme, & cips, cipe, ckps, MIN( (ckde-1), ckpe ), cjps, cjpe, & ngrid%moist(ngrid%sm31,ngrid%sm32,ngrid%sm33,itrace), & nids, nide, nkds, nkde, njds, njde, & nims, nime, nkms, nkme, njms, njme, & nips, nipe, nkps, MIN( (nkde-1), nkpe ), njps, njpe, & config_flags%shw, ngrid%imask_nostag, & .FALSE., .FALSE., & ngrid%i_parent_start, ngrid%j_parent_start, & ngrid%parent_grid_ratio, ngrid%parent_grid_ratio & ) ENDIF ENDDO DO itrace = PARAM_FIRST_SCALAR, num_dfi_moist IF ( SIZE( dfi_moist, 1 ) * SIZE( dfi_moist, 3 ) .GT. 1 ) THEN CALL copy_fcn ( & dfi_moist(grid%sm31,grid%sm32,grid%sm33,itrace), & cids, cide, ckds, ckde, cjds, cjde, & cims, cime, ckms, ckme, cjms, cjme, & cips, cipe, ckps, MIN( (ckde-1), ckpe ), cjps, cjpe, & ngrid%dfi_moist(ngrid%sm31,ngrid%sm32,ngrid%sm33,itrace), & nids, nide, nkds, nkde, njds, njde, & nims, nime, nkms, nkme, njms, njme, & nips, nipe, nkps, MIN( (nkde-1), nkpe ), njps, njpe, & config_flags%shw, ngrid%imask_nostag, & .FALSE., .FALSE., & ngrid%i_parent_start, ngrid%j_parent_start, & ngrid%parent_grid_ratio, ngrid%parent_grid_ratio & ) ENDIF ENDDO DO itrace = PARAM_FIRST_SCALAR, num_scalar IF ( SIZE( scalar, 1 ) * SIZE( scalar, 3 ) .GT. 1 ) THEN CALL copy_fcn ( & scalar(grid%sm31,grid%sm32,grid%sm33,itrace), & cids, cide, ckds, ckde, cjds, cjde, & cims, cime, ckms, ckme, cjms, cjme, & cips, cipe, ckps, MIN( (ckde-1), ckpe ), cjps, cjpe, & ngrid%scalar(ngrid%sm31,ngrid%sm32,ngrid%sm33,itrace), & nids, nide, nkds, nkde, njds, njde, & nims, nime, nkms, nkme, njms, njme, & nips, nipe, nkps, MIN( (nkde-1), nkpe ), njps, njpe, & config_flags%shw, ngrid%imask_nostag, & .FALSE., .FALSE., & ngrid%i_parent_start, ngrid%j_parent_start, & ngrid%parent_grid_ratio, ngrid%parent_grid_ratio & ) ENDIF ENDDO DO itrace = PARAM_FIRST_SCALAR, num_dfi_scalar IF ( SIZE( dfi_scalar, 1 ) * SIZE( dfi_scalar, 3 ) .GT. 1 ) THEN CALL copy_fcn ( & dfi_scalar(grid%sm31,grid%sm32,grid%sm33,itrace), & cids, cide, ckds, ckde, cjds, cjde, & cims, cime, ckms, ckme, cjms, cjme, & cips, cipe, ckps, MIN( (ckde-1), ckpe ), cjps, cjpe, & ngrid%dfi_scalar(ngrid%sm31,ngrid%sm32,ngrid%sm33,itrace), & nids, nide, nkds, nkde, njds, njde, & nims, nime, nkms, nkme, njms, njme, & nips, nipe, nkps, MIN( (nkde-1), nkpe ), njps, njpe, & config_flags%shw, ngrid%imask_nostag, & .FALSE., .FALSE., & ngrid%i_parent_start, ngrid%j_parent_start, & ngrid%parent_grid_ratio, ngrid%parent_grid_ratio & ) ENDIF ENDDO IF ( SIZE( grid%toposlpx, 1 ) * SIZE( grid%toposlpx, 2 ) .GT. 1 ) THEN CALL copy_fcn ( & grid%toposlpx, & cids, cide, 1, 1, cjds, cjde, & cims, cime, 1, 1, cjms, cjme, & cips, cipe, 1, 1, cjps, cjpe, & ngrid%toposlpx, & nids, nide, 1, 1, njds, njde, & nims, nime, 1, 1, njms, njme, & nips, nipe, 1, 1, njps, njpe, & config_flags%shw, ngrid%imask_nostag, & .FALSE., .FALSE., & ngrid%i_parent_start, ngrid%j_parent_start, & ngrid%parent_grid_ratio, ngrid%parent_grid_ratio & ) ENDIF IF ( SIZE( grid%toposlpy, 1 ) * SIZE( grid%toposlpy, 2 ) .GT. 1 ) THEN CALL copy_fcn ( & grid%toposlpy, & cids, cide, 1, 1, cjds, cjde, & cims, cime, 1, 1, cjms, cjme, & cips, cipe, 1, 1, cjps, cjpe, & ngrid%toposlpy, & nids, nide, 1, 1, njds, njde, & nims, nime, 1, 1, njms, njme, & nips, nipe, 1, 1, njps, njpe, & config_flags%shw, ngrid%imask_nostag, & .FALSE., .FALSE., & ngrid%i_parent_start, ngrid%j_parent_start, & ngrid%parent_grid_ratio, ngrid%parent_grid_ratio & ) ENDIF IF ( SIZE( grid%slope, 1 ) * SIZE( grid%slope, 2 ) .GT. 1 ) THEN CALL copy_fcn ( & grid%slope, & cids, cide, 1, 1, cjds, cjde, & cims, cime, 1, 1, cjms, cjme, & cips, cipe, 1, 1, cjps, cjpe, & ngrid%slope, & nids, nide, 1, 1, njds, njde, & nims, nime, 1, 1, njms, njme, & nips, nipe, 1, 1, njps, njpe, & config_flags%shw, ngrid%imask_nostag, & .FALSE., .FALSE., & ngrid%i_parent_start, ngrid%j_parent_start, & ngrid%parent_grid_ratio, ngrid%parent_grid_ratio & ) ENDIF IF ( SIZE( grid%slp_azi, 1 ) * SIZE( grid%slp_azi, 2 ) .GT. 1 ) THEN CALL copy_fcn ( & grid%slp_azi, & cids, cide, 1, 1, cjds, cjde, & cims, cime, 1, 1, cjms, cjme, & cips, cipe, 1, 1, cjps, cjpe, & ngrid%slp_azi, & nids, nide, 1, 1, njds, njde, & nims, nime, 1, 1, njms, njme, & nips, nipe, 1, 1, njps, njpe, & config_flags%shw, ngrid%imask_nostag, & .FALSE., .FALSE., & ngrid%i_parent_start, ngrid%j_parent_start, & ngrid%parent_grid_ratio, ngrid%parent_grid_ratio & ) ENDIF IF ( SIZE( grid%shdmax, 1 ) * SIZE( grid%shdmax, 2 ) .GT. 1 ) THEN CALL copy_fcnm ( & grid%shdmax, & cids, cide, 1, 1, cjds, cjde, & cims, cime, 1, 1, cjms, cjme, & cips, cipe, 1, 1, cjps, cjpe, & ngrid%shdmax, & nids, nide, 1, 1, njds, njde, & nims, nime, 1, 1, njms, njme, & nips, nipe, 1, 1, njps, njpe, & config_flags%shw, ngrid%imask_nostag, & .FALSE., .FALSE., & ngrid%i_parent_start, ngrid%j_parent_start, & ngrid%parent_grid_ratio, ngrid%parent_grid_ratio & ) ENDIF IF ( SIZE( grid%shdmin, 1 ) * SIZE( grid%shdmin, 2 ) .GT. 1 ) THEN CALL copy_fcnm ( & grid%shdmin, & cids, cide, 1, 1, cjds, cjde, & cims, cime, 1, 1, cjms, cjme, & cips, cipe, 1, 1, cjps, cjpe, & ngrid%shdmin, & nids, nide, 1, 1, njds, njde, & nims, nime, 1, 1, njms, njme, & nips, nipe, 1, 1, njps, njpe, & config_flags%shw, ngrid%imask_nostag, & .FALSE., .FALSE., & ngrid%i_parent_start, ngrid%j_parent_start, & ngrid%parent_grid_ratio, ngrid%parent_grid_ratio & ) ENDIF IF ( SIZE( grid%tslb, 1 ) * SIZE( grid%tslb, 3 ) .GT. 1 ) THEN CALL copy_fcnm ( & grid%tslb, & cids, cide, 1, config_flags%num_soil_layers, cjds, cjde, & cims, cime, 1, config_flags%num_soil_layers, cjms, cjme, & cips, cipe, 1, config_flags%num_soil_layers, cjps, cjpe, & ngrid%tslb, & nids, nide, 1, config_flags%num_soil_layers, njds, njde, & nims, nime, 1, config_flags%num_soil_layers, njms, njme, & nips, nipe, 1, config_flags%num_soil_layers, njps, njpe, & config_flags%shw, ngrid%imask_nostag, & .FALSE., .FALSE., & ngrid%i_parent_start, ngrid%j_parent_start, & ngrid%parent_grid_ratio, ngrid%parent_grid_ratio & ) ENDIF IF ( SIZE( grid%smois, 1 ) * SIZE( grid%smois, 3 ) .GT. 1 ) THEN CALL copy_fcnm ( & grid%smois, & cids, cide, 1, config_flags%num_soil_layers, cjds, cjde, & cims, cime, 1, config_flags%num_soil_layers, cjms, cjme, & cips, cipe, 1, config_flags%num_soil_layers, cjps, cjpe, & ngrid%smois, & nids, nide, 1, config_flags%num_soil_layers, njds, njde, & nims, nime, 1, config_flags%num_soil_layers, njms, njme, & nips, nipe, 1, config_flags%num_soil_layers, njps, njpe, & config_flags%shw, ngrid%imask_nostag, & .FALSE., .FALSE., & ngrid%i_parent_start, ngrid%j_parent_start, & ngrid%parent_grid_ratio, ngrid%parent_grid_ratio & ) ENDIF IF ( SIZE( grid%sh2o, 1 ) * SIZE( grid%sh2o, 3 ) .GT. 1 ) THEN CALL copy_fcnm ( & grid%sh2o, & cids, cide, 1, config_flags%num_soil_layers, cjds, cjde, & cims, cime, 1, config_flags%num_soil_layers, cjms, cjme, & cips, cipe, 1, config_flags%num_soil_layers, cjps, cjpe, & ngrid%sh2o, & nids, nide, 1, config_flags%num_soil_layers, njds, njde, & nims, nime, 1, config_flags%num_soil_layers, njms, njme, & nips, nipe, 1, config_flags%num_soil_layers, njps, njpe, & config_flags%shw, ngrid%imask_nostag, & .FALSE., .FALSE., & ngrid%i_parent_start, ngrid%j_parent_start, & ngrid%parent_grid_ratio, ngrid%parent_grid_ratio & ) ENDIF IF ( SIZE( grid%smcrel, 1 ) * SIZE( grid%smcrel, 3 ) .GT. 1 ) THEN CALL copy_fcnm ( & grid%smcrel, & cids, cide, 1, config_flags%num_soil_layers, cjds, cjde, & cims, cime, 1, config_flags%num_soil_layers, cjms, cjme, & cips, cipe, 1, config_flags%num_soil_layers, cjps, cjpe, & ngrid%smcrel, & nids, nide, 1, config_flags%num_soil_layers, njds, njde, & nims, nime, 1, config_flags%num_soil_layers, njms, njme, & nips, nipe, 1, config_flags%num_soil_layers, njps, njpe, & config_flags%shw, ngrid%imask_nostag, & .FALSE., .FALSE., & ngrid%i_parent_start, ngrid%j_parent_start, & ngrid%parent_grid_ratio, ngrid%parent_grid_ratio & ) ENDIF IF ( SIZE( grid%xice, 1 ) * SIZE( grid%xice, 2 ) .GT. 1 ) THEN CALL copy_fcnm ( & grid%xice, & cids, cide, 1, 1, cjds, cjde, & cims, cime, 1, 1, cjms, cjme, & cips, cipe, 1, 1, cjps, cjpe, & ngrid%xice, & nids, nide, 1, 1, njds, njde, & nims, nime, 1, 1, njms, njme, & nips, nipe, 1, 1, njps, njpe, & config_flags%shw, ngrid%imask_nostag, & .FALSE., .FALSE., & ngrid%i_parent_start, ngrid%j_parent_start, & ngrid%parent_grid_ratio, ngrid%parent_grid_ratio & ) ENDIF IF ( SIZE( grid%xicem, 1 ) * SIZE( grid%xicem, 2 ) .GT. 1 ) THEN CALL copy_fcnm ( & grid%xicem, & cids, cide, 1, 1, cjds, cjde, & cims, cime, 1, 1, cjms, cjme, & cips, cipe, 1, 1, cjps, cjpe, & ngrid%xicem, & nids, nide, 1, 1, njds, njde, & nims, nime, 1, 1, njms, njme, & nips, nipe, 1, 1, njps, njpe, & config_flags%shw, ngrid%imask_nostag, & .FALSE., .FALSE., & ngrid%i_parent_start, ngrid%j_parent_start, & ngrid%parent_grid_ratio, ngrid%parent_grid_ratio & ) ENDIF IF ( SIZE( grid%ivgtyp, 1 ) * SIZE( grid%ivgtyp, 2 ) .GT. 1 ) THEN CALL copy_fcni ( & grid%ivgtyp, & cids, cide, 1, 1, cjds, cjde, & cims, cime, 1, 1, cjms, cjme, & cips, cipe, 1, 1, cjps, cjpe, & ngrid%ivgtyp, & nids, nide, 1, 1, njds, njde, & nims, nime, 1, 1, njms, njme, & nips, nipe, 1, 1, njps, njpe, & config_flags%shw, ngrid%imask_nostag, & .FALSE., .FALSE., & ngrid%i_parent_start, ngrid%j_parent_start, & ngrid%parent_grid_ratio, ngrid%parent_grid_ratio & ) ENDIF IF ( SIZE( grid%isltyp, 1 ) * SIZE( grid%isltyp, 2 ) .GT. 1 ) THEN CALL copy_fcni ( & grid%isltyp, & cids, cide, 1, 1, cjds, cjde, & cims, cime, 1, 1, cjms, cjme, & cips, cipe, 1, 1, cjps, cjpe, & ngrid%isltyp, & nids, nide, 1, 1, njds, njde, & nims, nime, 1, 1, njms, njme, & nips, nipe, 1, 1, njps, njpe, & config_flags%shw, ngrid%imask_nostag, & .FALSE., .FALSE., & ngrid%i_parent_start, ngrid%j_parent_start, & ngrid%parent_grid_ratio, ngrid%parent_grid_ratio & ) ENDIF IF ( SIZE( grid%vegfra, 1 ) * SIZE( grid%vegfra, 2 ) .GT. 1 ) THEN CALL copy_fcnm ( & grid%vegfra, & cids, cide, 1, 1, cjds, cjde, & cims, cime, 1, 1, cjms, cjme, & cips, cipe, 1, 1, cjps, cjpe, & ngrid%vegfra, & nids, nide, 1, 1, njds, njde, & nims, nime, 1, 1, njms, njme, & nips, nipe, 1, 1, njps, njpe, & config_flags%shw, ngrid%imask_nostag, & .FALSE., .FALSE., & ngrid%i_parent_start, ngrid%j_parent_start, & ngrid%parent_grid_ratio, ngrid%parent_grid_ratio & ) ENDIF IF ( SIZE( grid%acgrdflx, 1 ) * SIZE( grid%acgrdflx, 2 ) .GT. 1 ) THEN CALL copy_fcn ( & grid%acgrdflx, & cids, cide, 1, 1, cjds, cjde, & cims, cime, 1, 1, cjms, cjme, & cips, cipe, 1, 1, cjps, cjpe, & ngrid%acgrdflx, & nids, nide, 1, 1, njds, njde, & nims, nime, 1, 1, njms, njme, & nips, nipe, 1, 1, njps, njpe, & config_flags%shw, ngrid%imask_nostag, & .FALSE., .FALSE., & ngrid%i_parent_start, ngrid%j_parent_start, & ngrid%parent_grid_ratio, ngrid%parent_grid_ratio & ) ENDIF IF ( SIZE( grid%acsnow, 1 ) * SIZE( grid%acsnow, 2 ) .GT. 1 ) THEN CALL copy_fcnm ( & grid%acsnow, & cids, cide, 1, 1, cjds, cjde, & cims, cime, 1, 1, cjms, cjme, & cips, cipe, 1, 1, cjps, cjpe, & ngrid%acsnow, & nids, nide, 1, 1, njds, njde, & nims, nime, 1, 1, njms, njme, & nips, nipe, 1, 1, njps, njpe, & config_flags%shw, ngrid%imask_nostag, & .FALSE., .FALSE., & ngrid%i_parent_start, ngrid%j_parent_start, & ngrid%parent_grid_ratio, ngrid%parent_grid_ratio & ) ENDIF IF ( SIZE( grid%acsnom, 1 ) * SIZE( grid%acsnom, 2 ) .GT. 1 ) THEN CALL copy_fcnm ( & grid%acsnom, & cids, cide, 1, 1, cjds, cjde, & cims, cime, 1, 1, cjms, cjme, & cips, cipe, 1, 1, cjps, cjpe, & ngrid%acsnom, & nids, nide, 1, 1, njds, njde, & nims, nime, 1, 1, njms, njme, & nips, nipe, 1, 1, njps, njpe, & config_flags%shw, ngrid%imask_nostag, & .FALSE., .FALSE., & ngrid%i_parent_start, ngrid%j_parent_start, & ngrid%parent_grid_ratio, ngrid%parent_grid_ratio & ) ENDIF IF ( SIZE( grid%snow, 1 ) * SIZE( grid%snow, 2 ) .GT. 1 ) THEN CALL copy_fcnm ( & grid%snow, & cids, cide, 1, 1, cjds, cjde, & cims, cime, 1, 1, cjms, cjme, & cips, cipe, 1, 1, cjps, cjpe, & ngrid%snow, & nids, nide, 1, 1, njds, njde, & nims, nime, 1, 1, njms, njme, & nips, nipe, 1, 1, njps, njpe, & config_flags%shw, ngrid%imask_nostag, & .FALSE., .FALSE., & ngrid%i_parent_start, ngrid%j_parent_start, & ngrid%parent_grid_ratio, ngrid%parent_grid_ratio & ) ENDIF IF ( SIZE( grid%snowh, 1 ) * SIZE( grid%snowh, 2 ) .GT. 1 ) THEN CALL copy_fcnm ( & grid%snowh, & cids, cide, 1, 1, cjds, cjde, & cims, cime, 1, 1, cjms, cjme, & cips, cipe, 1, 1, cjps, cjpe, & ngrid%snowh, & nids, nide, 1, 1, njds, njde, & nims, nime, 1, 1, njms, njme, & nips, nipe, 1, 1, njps, njpe, & config_flags%shw, ngrid%imask_nostag, & .FALSE., .FALSE., & ngrid%i_parent_start, ngrid%j_parent_start, & ngrid%parent_grid_ratio, ngrid%parent_grid_ratio & ) ENDIF IF ( SIZE( grid%canwat, 1 ) * SIZE( grid%canwat, 2 ) .GT. 1 ) THEN CALL copy_fcnm ( & grid%canwat, & cids, cide, 1, 1, cjds, cjde, & cims, cime, 1, 1, cjms, cjme, & cips, cipe, 1, 1, cjps, cjpe, & ngrid%canwat, & nids, nide, 1, 1, njds, njde, & nims, nime, 1, 1, njms, njme, & nips, nipe, 1, 1, njps, njpe, & config_flags%shw, ngrid%imask_nostag, & .FALSE., .FALSE., & ngrid%i_parent_start, ngrid%j_parent_start, & ngrid%parent_grid_ratio, ngrid%parent_grid_ratio & ) ENDIF IF ( SIZE( grid%tr_urb2d, 1 ) * SIZE( grid%tr_urb2d, 2 ) .GT. 1 ) THEN CALL copy_fcnm ( & grid%tr_urb2d, & cids, cide, 1, 1, cjds, cjde, & cims, cime, 1, 1, cjms, cjme, & cips, cipe, 1, 1, cjps, cjpe, & ngrid%tr_urb2d, & nids, nide, 1, 1, njds, njde, & nims, nime, 1, 1, njms, njme, & nips, nipe, 1, 1, njps, njpe, & config_flags%shw, ngrid%imask_nostag, & .FALSE., .FALSE., & ngrid%i_parent_start, ngrid%j_parent_start, & ngrid%parent_grid_ratio, ngrid%parent_grid_ratio & ) ENDIF IF ( SIZE( grid%tb_urb2d, 1 ) * SIZE( grid%tb_urb2d, 2 ) .GT. 1 ) THEN CALL copy_fcnm ( & grid%tb_urb2d, & cids, cide, 1, 1, cjds, cjde, & cims, cime, 1, 1, cjms, cjme, & cips, cipe, 1, 1, cjps, cjpe, & ngrid%tb_urb2d, & nids, nide, 1, 1, njds, njde, & nims, nime, 1, 1, njms, njme, & nips, nipe, 1, 1, njps, njpe, & config_flags%shw, ngrid%imask_nostag, & .FALSE., .FALSE., & ngrid%i_parent_start, ngrid%j_parent_start, & ngrid%parent_grid_ratio, ngrid%parent_grid_ratio & ) ENDIF IF ( SIZE( grid%tg_urb2d, 1 ) * SIZE( grid%tg_urb2d, 2 ) .GT. 1 ) THEN CALL copy_fcnm ( & grid%tg_urb2d, & cids, cide, 1, 1, cjds, cjde, & cims, cime, 1, 1, cjms, cjme, & cips, cipe, 1, 1, cjps, cjpe, & ngrid%tg_urb2d, & nids, nide, 1, 1, njds, njde, & nims, nime, 1, 1, njms, njme, & nips, nipe, 1, 1, njps, njpe, & config_flags%shw, ngrid%imask_nostag, & .FALSE., .FALSE., & ngrid%i_parent_start, ngrid%j_parent_start, & ngrid%parent_grid_ratio, ngrid%parent_grid_ratio & ) ENDIF IF ( SIZE( grid%tc_urb2d, 1 ) * SIZE( grid%tc_urb2d, 2 ) .GT. 1 ) THEN CALL copy_fcnm ( & grid%tc_urb2d, & cids, cide, 1, 1, cjds, cjde, & cims, cime, 1, 1, cjms, cjme, & cips, cipe, 1, 1, cjps, cjpe, & ngrid%tc_urb2d, & nids, nide, 1, 1, njds, njde, & nims, nime, 1, 1, njms, njme, & nips, nipe, 1, 1, njps, njpe, & config_flags%shw, ngrid%imask_nostag, & .FALSE., .FALSE., & ngrid%i_parent_start, ngrid%j_parent_start, & ngrid%parent_grid_ratio, ngrid%parent_grid_ratio & ) ENDIF IF ( SIZE( grid%qc_urb2d, 1 ) * SIZE( grid%qc_urb2d, 2 ) .GT. 1 ) THEN CALL copy_fcnm ( & grid%qc_urb2d, & cids, cide, 1, 1, cjds, cjde, & cims, cime, 1, 1, cjms, cjme, & cips, cipe, 1, 1, cjps, cjpe, & ngrid%qc_urb2d, & nids, nide, 1, 1, njds, njde, & nims, nime, 1, 1, njms, njme, & nips, nipe, 1, 1, njps, njpe, & config_flags%shw, ngrid%imask_nostag, & .FALSE., .FALSE., & ngrid%i_parent_start, ngrid%j_parent_start, & ngrid%parent_grid_ratio, ngrid%parent_grid_ratio & ) ENDIF IF ( SIZE( grid%uc_urb2d, 1 ) * SIZE( grid%uc_urb2d, 2 ) .GT. 1 ) THEN CALL copy_fcnm ( & grid%uc_urb2d, & cids, cide, 1, 1, cjds, cjde, & cims, cime, 1, 1, cjms, cjme, & cips, cipe, 1, 1, cjps, cjpe, & ngrid%uc_urb2d, & nids, nide, 1, 1, njds, njde, & nims, nime, 1, 1, njms, njme, & nips, nipe, 1, 1, njps, njpe, & config_flags%shw, ngrid%imask_nostag, & .FALSE., .FALSE., & ngrid%i_parent_start, ngrid%j_parent_start, & ngrid%parent_grid_ratio, ngrid%parent_grid_ratio & ) ENDIF IF ( SIZE( grid%xxxr_urb2d, 1 ) * SIZE( grid%xxxr_urb2d, 2 ) .GT. 1 ) THEN CALL copy_fcnm ( & grid%xxxr_urb2d, & cids, cide, 1, 1, cjds, cjde, & cims, cime, 1, 1, cjms, cjme, & cips, cipe, 1, 1, cjps, cjpe, & ngrid%xxxr_urb2d, & nids, nide, 1, 1, njds, njde, & nims, nime, 1, 1, njms, njme, & nips, nipe, 1, 1, njps, njpe, & config_flags%shw, ngrid%imask_nostag, & .FALSE., .FALSE., & ngrid%i_parent_start, ngrid%j_parent_start, & ngrid%parent_grid_ratio, ngrid%parent_grid_ratio & ) ENDIF IF ( SIZE( grid%xxxb_urb2d, 1 ) * SIZE( grid%xxxb_urb2d, 2 ) .GT. 1 ) THEN CALL copy_fcnm ( & grid%xxxb_urb2d, & cids, cide, 1, 1, cjds, cjde, & cims, cime, 1, 1, cjms, cjme, & cips, cipe, 1, 1, cjps, cjpe, & ngrid%xxxb_urb2d, & nids, nide, 1, 1, njds, njde, & nims, nime, 1, 1, njms, njme, & nips, nipe, 1, 1, njps, njpe, & config_flags%shw, ngrid%imask_nostag, & .FALSE., .FALSE., & ngrid%i_parent_start, ngrid%j_parent_start, & ngrid%parent_grid_ratio, ngrid%parent_grid_ratio & ) ENDIF IF ( SIZE( grid%xxxg_urb2d, 1 ) * SIZE( grid%xxxg_urb2d, 2 ) .GT. 1 ) THEN CALL copy_fcnm ( & grid%xxxg_urb2d, & cids, cide, 1, 1, cjds, cjde, & cims, cime, 1, 1, cjms, cjme, & cips, cipe, 1, 1, cjps, cjpe, & ngrid%xxxg_urb2d, & nids, nide, 1, 1, njds, njde, & nims, nime, 1, 1, njms, njme, & nips, nipe, 1, 1, njps, njpe, & config_flags%shw, ngrid%imask_nostag, & .FALSE., .FALSE., & ngrid%i_parent_start, ngrid%j_parent_start, & ngrid%parent_grid_ratio, ngrid%parent_grid_ratio & ) ENDIF IF ( SIZE( grid%xxxc_urb2d, 1 ) * SIZE( grid%xxxc_urb2d, 2 ) .GT. 1 ) THEN CALL copy_fcnm ( & grid%xxxc_urb2d, & cids, cide, 1, 1, cjds, cjde, & cims, cime, 1, 1, cjms, cjme, & cips, cipe, 1, 1, cjps, cjpe, & ngrid%xxxc_urb2d, & nids, nide, 1, 1, njds, njde, & nims, nime, 1, 1, njms, njme, & nips, nipe, 1, 1, njps, njpe, & config_flags%shw, ngrid%imask_nostag, & .FALSE., .FALSE., & ngrid%i_parent_start, ngrid%j_parent_start, & ngrid%parent_grid_ratio, ngrid%parent_grid_ratio & ) ENDIF IF ( SIZE( grid%trl_urb3d, 1 ) * SIZE( grid%trl_urb3d, 3 ) .GT. 1 ) THEN CALL copy_fcnm ( & grid%trl_urb3d, & cids, cide, 1, config_flags%num_soil_layers, cjds, cjde, & cims, cime, 1, config_flags%num_soil_layers, cjms, cjme, & cips, cipe, 1, config_flags%num_soil_layers, cjps, cjpe, & ngrid%trl_urb3d, & nids, nide, 1, config_flags%num_soil_layers, njds, njde, & nims, nime, 1, config_flags%num_soil_layers, njms, njme, & nips, nipe, 1, config_flags%num_soil_layers, njps, njpe, & config_flags%shw, ngrid%imask_nostag, & .FALSE., .FALSE., & ngrid%i_parent_start, ngrid%j_parent_start, & ngrid%parent_grid_ratio, ngrid%parent_grid_ratio & ) ENDIF IF ( SIZE( grid%tbl_urb3d, 1 ) * SIZE( grid%tbl_urb3d, 3 ) .GT. 1 ) THEN CALL copy_fcnm ( & grid%tbl_urb3d, & cids, cide, 1, config_flags%num_soil_layers, cjds, cjde, & cims, cime, 1, config_flags%num_soil_layers, cjms, cjme, & cips, cipe, 1, config_flags%num_soil_layers, cjps, cjpe, & ngrid%tbl_urb3d, & nids, nide, 1, config_flags%num_soil_layers, njds, njde, & nims, nime, 1, config_flags%num_soil_layers, njms, njme, & nips, nipe, 1, config_flags%num_soil_layers, njps, njpe, & config_flags%shw, ngrid%imask_nostag, & .FALSE., .FALSE., & ngrid%i_parent_start, ngrid%j_parent_start, & ngrid%parent_grid_ratio, ngrid%parent_grid_ratio & ) ENDIF IF ( SIZE( grid%tgl_urb3d, 1 ) * SIZE( grid%tgl_urb3d, 3 ) .GT. 1 ) THEN CALL copy_fcnm ( & grid%tgl_urb3d, & cids, cide, 1, config_flags%num_soil_layers, cjds, cjde, & cims, cime, 1, config_flags%num_soil_layers, cjms, cjme, & cips, cipe, 1, config_flags%num_soil_layers, cjps, cjpe, & ngrid%tgl_urb3d, & nids, nide, 1, config_flags%num_soil_layers, njds, njde, & nims, nime, 1, config_flags%num_soil_layers, njms, njme, & nips, nipe, 1, config_flags%num_soil_layers, njps, njpe, & config_flags%shw, ngrid%imask_nostag, & .FALSE., .FALSE., & ngrid%i_parent_start, ngrid%j_parent_start, & ngrid%parent_grid_ratio, ngrid%parent_grid_ratio & ) ENDIF IF ( SIZE( grid%frc_urb2d, 1 ) * SIZE( grid%frc_urb2d, 2 ) .GT. 1 ) THEN CALL copy_fcnm ( & grid%frc_urb2d, & cids, cide, 1, 1, cjds, cjde, & cims, cime, 1, 1, cjms, cjme, & cips, cipe, 1, 1, cjps, cjpe, & ngrid%frc_urb2d, & nids, nide, 1, 1, njds, njde, & nims, nime, 1, 1, njms, njme, & nips, nipe, 1, 1, njps, njpe, & config_flags%shw, ngrid%imask_nostag, & .FALSE., .FALSE., & ngrid%i_parent_start, ngrid%j_parent_start, & ngrid%parent_grid_ratio, ngrid%parent_grid_ratio & ) ENDIF IF ( SIZE( grid%utype_urb2d, 1 ) * SIZE( grid%utype_urb2d, 2 ) .GT. 1 ) THEN CALL copy_fcnm ( & grid%utype_urb2d, & cids, cide, 1, 1, cjds, cjde, & cims, cime, 1, 1, cjms, cjme, & cips, cipe, 1, 1, cjps, cjpe, & ngrid%utype_urb2d, & nids, nide, 1, 1, njds, njde, & nims, nime, 1, 1, njms, njme, & nips, nipe, 1, 1, njps, njpe, & config_flags%shw, ngrid%imask_nostag, & .FALSE., .FALSE., & ngrid%i_parent_start, ngrid%j_parent_start, & ngrid%parent_grid_ratio, ngrid%parent_grid_ratio & ) ENDIF IF ( SIZE( grid%var2d, 1 ) * SIZE( grid%var2d, 2 ) .GT. 1 ) THEN CALL copy_fcn ( & grid%var2d, & cids, cide, 1, 1, cjds, cjde, & cims, cime, 1, 1, cjms, cjme, & cips, cipe, 1, 1, cjps, cjpe, & ngrid%var2d, & nids, nide, 1, 1, njds, njde, & nims, nime, 1, 1, njms, njme, & nips, nipe, 1, 1, njps, njpe, & config_flags%shw, ngrid%imask_nostag, & .FALSE., .FALSE., & ngrid%i_parent_start, ngrid%j_parent_start, & ngrid%parent_grid_ratio, ngrid%parent_grid_ratio & ) ENDIF IF ( SIZE( grid%oc12d, 1 ) * SIZE( grid%oc12d, 2 ) .GT. 1 ) THEN CALL copy_fcn ( & grid%oc12d, & cids, cide, 1, 1, cjds, cjde, & cims, cime, 1, 1, cjms, cjme, & cips, cipe, 1, 1, cjps, cjpe, & ngrid%oc12d, & nids, nide, 1, 1, njds, njde, & nims, nime, 1, 1, njms, njme, & nips, nipe, 1, 1, njps, njpe, & config_flags%shw, ngrid%imask_nostag, & .FALSE., .FALSE., & ngrid%i_parent_start, ngrid%j_parent_start, & ngrid%parent_grid_ratio, ngrid%parent_grid_ratio & ) ENDIF IF ( SIZE( grid%oa1, 1 ) * SIZE( grid%oa1, 2 ) .GT. 1 ) THEN CALL copy_fcn ( & grid%oa1, & cids, cide, 1, 1, cjds, cjde, & cims, cime, 1, 1, cjms, cjme, & cips, cipe, 1, 1, cjps, cjpe, & ngrid%oa1, & nids, nide, 1, 1, njds, njde, & nims, nime, 1, 1, njms, njme, & nips, nipe, 1, 1, njps, njpe, & config_flags%shw, ngrid%imask_nostag, & .FALSE., .FALSE., & ngrid%i_parent_start, ngrid%j_parent_start, & ngrid%parent_grid_ratio, ngrid%parent_grid_ratio & ) ENDIF IF ( SIZE( grid%oa2, 1 ) * SIZE( grid%oa2, 2 ) .GT. 1 ) THEN CALL copy_fcn ( & grid%oa2, & cids, cide, 1, 1, cjds, cjde, & cims, cime, 1, 1, cjms, cjme, & cips, cipe, 1, 1, cjps, cjpe, & ngrid%oa2, & nids, nide, 1, 1, njds, njde, & nims, nime, 1, 1, njms, njme, & nips, nipe, 1, 1, njps, njpe, & config_flags%shw, ngrid%imask_nostag, & .FALSE., .FALSE., & ngrid%i_parent_start, ngrid%j_parent_start, & ngrid%parent_grid_ratio, ngrid%parent_grid_ratio & ) ENDIF IF ( SIZE( grid%oa3, 1 ) * SIZE( grid%oa3, 2 ) .GT. 1 ) THEN CALL copy_fcn ( & grid%oa3, & cids, cide, 1, 1, cjds, cjde, & cims, cime, 1, 1, cjms, cjme, & cips, cipe, 1, 1, cjps, cjpe, & ngrid%oa3, & nids, nide, 1, 1, njds, njde, & nims, nime, 1, 1, njms, njme, & nips, nipe, 1, 1, njps, njpe, & config_flags%shw, ngrid%imask_nostag, & .FALSE., .FALSE., & ngrid%i_parent_start, ngrid%j_parent_start, & ngrid%parent_grid_ratio, ngrid%parent_grid_ratio & ) ENDIF IF ( SIZE( grid%oa4, 1 ) * SIZE( grid%oa4, 2 ) .GT. 1 ) THEN CALL copy_fcn ( & grid%oa4, & cids, cide, 1, 1, cjds, cjde, & cims, cime, 1, 1, cjms, cjme, & cips, cipe, 1, 1, cjps, cjpe, & ngrid%oa4, & nids, nide, 1, 1, njds, njde, & nims, nime, 1, 1, njms, njme, & nips, nipe, 1, 1, njps, njpe, & config_flags%shw, ngrid%imask_nostag, & .FALSE., .FALSE., & ngrid%i_parent_start, ngrid%j_parent_start, & ngrid%parent_grid_ratio, ngrid%parent_grid_ratio & ) ENDIF IF ( SIZE( grid%ol1, 1 ) * SIZE( grid%ol1, 2 ) .GT. 1 ) THEN CALL copy_fcn ( & grid%ol1, & cids, cide, 1, 1, cjds, cjde, & cims, cime, 1, 1, cjms, cjme, & cips, cipe, 1, 1, cjps, cjpe, & ngrid%ol1, & nids, nide, 1, 1, njds, njde, & nims, nime, 1, 1, njms, njme, & nips, nipe, 1, 1, njps, njpe, & config_flags%shw, ngrid%imask_nostag, & .FALSE., .FALSE., & ngrid%i_parent_start, ngrid%j_parent_start, & ngrid%parent_grid_ratio, ngrid%parent_grid_ratio & ) ENDIF IF ( SIZE( grid%ol2, 1 ) * SIZE( grid%ol2, 2 ) .GT. 1 ) THEN CALL copy_fcn ( & grid%ol2, & cids, cide, 1, 1, cjds, cjde, & cims, cime, 1, 1, cjms, cjme, & cips, cipe, 1, 1, cjps, cjpe, & ngrid%ol2, & nids, nide, 1, 1, njds, njde, & nims, nime, 1, 1, njms, njme, & nips, nipe, 1, 1, njps, njpe, & config_flags%shw, ngrid%imask_nostag, & .FALSE., .FALSE., & ngrid%i_parent_start, ngrid%j_parent_start, & ngrid%parent_grid_ratio, ngrid%parent_grid_ratio & ) ENDIF IF ( SIZE( grid%ol3, 1 ) * SIZE( grid%ol3, 2 ) .GT. 1 ) THEN CALL copy_fcn ( & grid%ol3, & cids, cide, 1, 1, cjds, cjde, & cims, cime, 1, 1, cjms, cjme, & cips, cipe, 1, 1, cjps, cjpe, & ngrid%ol3, & nids, nide, 1, 1, njds, njde, & nims, nime, 1, 1, njms, njme, & nips, nipe, 1, 1, njps, njpe, & config_flags%shw, ngrid%imask_nostag, & .FALSE., .FALSE., & ngrid%i_parent_start, ngrid%j_parent_start, & ngrid%parent_grid_ratio, ngrid%parent_grid_ratio & ) ENDIF IF ( SIZE( grid%ol4, 1 ) * SIZE( grid%ol4, 2 ) .GT. 1 ) THEN CALL copy_fcn ( & grid%ol4, & cids, cide, 1, 1, cjds, cjde, & cims, cime, 1, 1, cjms, cjme, & cips, cipe, 1, 1, cjps, cjpe, & ngrid%ol4, & nids, nide, 1, 1, njds, njde, & nims, nime, 1, 1, njms, njme, & nips, nipe, 1, 1, njps, njpe, & config_flags%shw, ngrid%imask_nostag, & .FALSE., .FALSE., & ngrid%i_parent_start, ngrid%j_parent_start, & ngrid%parent_grid_ratio, ngrid%parent_grid_ratio & ) ENDIF IF ( SIZE( grid%f_ice_phy, 1 ) * SIZE( grid%f_ice_phy, 3 ) .GT. 1 ) THEN CALL copy_fcn ( & grid%f_ice_phy, & cids, cide, ckds, ckde, cjds, cjde, & cims, cime, ckms, ckme, cjms, cjme, & cips, cipe, ckps, MIN( (ckde-1), ckpe ), cjps, cjpe, & ngrid%f_ice_phy, & nids, nide, nkds, nkde, njds, njde, & nims, nime, nkms, nkme, njms, njme, & nips, nipe, nkps, MIN( (nkde-1), nkpe ), njps, njpe, & config_flags%shw, ngrid%imask_nostag, & .FALSE., .FALSE., & ngrid%i_parent_start, ngrid%j_parent_start, & ngrid%parent_grid_ratio, ngrid%parent_grid_ratio & ) ENDIF IF ( SIZE( grid%f_rain_phy, 1 ) * SIZE( grid%f_rain_phy, 3 ) .GT. 1 ) THEN CALL copy_fcn ( & grid%f_rain_phy, & cids, cide, ckds, ckde, cjds, cjde, & cims, cime, ckms, ckme, cjms, cjme, & cips, cipe, ckps, MIN( (ckde-1), ckpe ), cjps, cjpe, & ngrid%f_rain_phy, & nids, nide, nkds, nkde, njds, njde, & nims, nime, nkms, nkme, njms, njme, & nips, nipe, nkps, MIN( (nkde-1), nkpe ), njps, njpe, & config_flags%shw, ngrid%imask_nostag, & .FALSE., .FALSE., & ngrid%i_parent_start, ngrid%j_parent_start, & ngrid%parent_grid_ratio, ngrid%parent_grid_ratio & ) ENDIF IF ( SIZE( grid%f_rimef_phy, 1 ) * SIZE( grid%f_rimef_phy, 3 ) .GT. 1 ) THEN CALL copy_fcn ( & grid%f_rimef_phy, & cids, cide, ckds, ckde, cjds, cjde, & cims, cime, ckms, ckme, cjms, cjme, & cips, cipe, ckps, MIN( (ckde-1), ckpe ), cjps, cjpe, & ngrid%f_rimef_phy, & nids, nide, nkds, nkde, njds, njde, & nims, nime, nkms, nkme, njms, njme, & nips, nipe, nkps, MIN( (nkde-1), nkpe ), njps, njpe, & config_flags%shw, ngrid%imask_nostag, & .FALSE., .FALSE., & ngrid%i_parent_start, ngrid%j_parent_start, & ngrid%parent_grid_ratio, ngrid%parent_grid_ratio & ) ENDIF IF ( SIZE( grid%h_diabatic, 1 ) * SIZE( grid%h_diabatic, 3 ) .GT. 1 ) THEN CALL copy_fcn ( & grid%h_diabatic, & cids, cide, ckds, ckde, cjds, cjde, & cims, cime, ckms, ckme, cjms, cjme, & cips, cipe, ckps, MIN( (ckde-1), ckpe ), cjps, cjpe, & ngrid%h_diabatic, & nids, nide, nkds, nkde, njds, njde, & nims, nime, nkms, nkme, njms, njme, & nips, nipe, nkps, MIN( (nkde-1), nkpe ), njps, njpe, & config_flags%shw, ngrid%imask_nostag, & .FALSE., .FALSE., & ngrid%i_parent_start, ngrid%j_parent_start, & ngrid%parent_grid_ratio, ngrid%parent_grid_ratio & ) ENDIF IF ( SIZE( grid%msft, 1 ) * SIZE( grid%msft, 2 ) .GT. 1 ) THEN CALL copy_fcnm ( & grid%msft, & cids, cide, 1, 1, cjds, cjde, & cims, cime, 1, 1, cjms, cjme, & cips, cipe, 1, 1, cjps, cjpe, & ngrid%msft, & nids, nide, 1, 1, njds, njde, & nims, nime, 1, 1, njms, njme, & nips, nipe, 1, 1, njps, njpe, & config_flags%shw, ngrid%imask_nostag, & .FALSE., .FALSE., & ngrid%i_parent_start, ngrid%j_parent_start, & ngrid%parent_grid_ratio, ngrid%parent_grid_ratio & ) ENDIF IF ( SIZE( grid%msfu, 1 ) * SIZE( grid%msfu, 2 ) .GT. 1 ) THEN CALL copy_fcnm ( & grid%msfu, & cids, cide, 1, 1, cjds, cjde, & cims, cime, 1, 1, cjms, cjme, & cips, cipe, 1, 1, cjps, cjpe, & ngrid%msfu, & nids, nide, 1, 1, njds, njde, & nims, nime, 1, 1, njms, njme, & nips, nipe, 1, 1, njps, njpe, & config_flags%shw, ngrid%imask_xstag, & .TRUE., .FALSE., & ngrid%i_parent_start, ngrid%j_parent_start, & ngrid%parent_grid_ratio, ngrid%parent_grid_ratio & ) ENDIF IF ( SIZE( grid%msfv, 1 ) * SIZE( grid%msfv, 2 ) .GT. 1 ) THEN CALL copy_fcnm ( & grid%msfv, & cids, cide, 1, 1, cjds, cjde, & cims, cime, 1, 1, cjms, cjme, & cips, cipe, 1, 1, cjps, cjpe, & ngrid%msfv, & nids, nide, 1, 1, njds, njde, & nims, nime, 1, 1, njms, njme, & nips, nipe, 1, 1, njps, njpe, & config_flags%shw, ngrid%imask_ystag, & .FALSE., .TRUE., & ngrid%i_parent_start, ngrid%j_parent_start, & ngrid%parent_grid_ratio, ngrid%parent_grid_ratio & ) ENDIF IF ( SIZE( grid%msftx, 1 ) * SIZE( grid%msftx, 2 ) .GT. 1 ) THEN CALL copy_fcnm ( & grid%msftx, & cids, cide, 1, 1, cjds, cjde, & cims, cime, 1, 1, cjms, cjme, & cips, cipe, 1, 1, cjps, cjpe, & ngrid%msftx, & nids, nide, 1, 1, njds, njde, & nims, nime, 1, 1, njms, njme, & nips, nipe, 1, 1, njps, njpe, & config_flags%shw, ngrid%imask_nostag, & .FALSE., .FALSE., & ngrid%i_parent_start, ngrid%j_parent_start, & ngrid%parent_grid_ratio, ngrid%parent_grid_ratio & ) ENDIF IF ( SIZE( grid%msfty, 1 ) * SIZE( grid%msfty, 2 ) .GT. 1 ) THEN CALL copy_fcnm ( & grid%msfty, & cids, cide, 1, 1, cjds, cjde, & cims, cime, 1, 1, cjms, cjme, & cips, cipe, 1, 1, cjps, cjpe, & ngrid%msfty, & nids, nide, 1, 1, njds, njde, & nims, nime, 1, 1, njms, njme, & nips, nipe, 1, 1, njps, njpe, & config_flags%shw, ngrid%imask_nostag, & .FALSE., .FALSE., & ngrid%i_parent_start, ngrid%j_parent_start, & ngrid%parent_grid_ratio, ngrid%parent_grid_ratio & ) ENDIF IF ( SIZE( grid%msfux, 1 ) * SIZE( grid%msfux, 2 ) .GT. 1 ) THEN CALL copy_fcnm ( & grid%msfux, & cids, cide, 1, 1, cjds, cjde, & cims, cime, 1, 1, cjms, cjme, & cips, cipe, 1, 1, cjps, cjpe, & ngrid%msfux, & nids, nide, 1, 1, njds, njde, & nims, nime, 1, 1, njms, njme, & nips, nipe, 1, 1, njps, njpe, & config_flags%shw, ngrid%imask_xstag, & .TRUE., .FALSE., & ngrid%i_parent_start, ngrid%j_parent_start, & ngrid%parent_grid_ratio, ngrid%parent_grid_ratio & ) ENDIF IF ( SIZE( grid%msfuy, 1 ) * SIZE( grid%msfuy, 2 ) .GT. 1 ) THEN CALL copy_fcnm ( & grid%msfuy, & cids, cide, 1, 1, cjds, cjde, & cims, cime, 1, 1, cjms, cjme, & cips, cipe, 1, 1, cjps, cjpe, & ngrid%msfuy, & nids, nide, 1, 1, njds, njde, & nims, nime, 1, 1, njms, njme, & nips, nipe, 1, 1, njps, njpe, & config_flags%shw, ngrid%imask_xstag, & .TRUE., .FALSE., & ngrid%i_parent_start, ngrid%j_parent_start, & ngrid%parent_grid_ratio, ngrid%parent_grid_ratio & ) ENDIF IF ( SIZE( grid%msfvx, 1 ) * SIZE( grid%msfvx, 2 ) .GT. 1 ) THEN CALL copy_fcnm ( & grid%msfvx, & cids, cide, 1, 1, cjds, cjde, & cims, cime, 1, 1, cjms, cjme, & cips, cipe, 1, 1, cjps, cjpe, & ngrid%msfvx, & nids, nide, 1, 1, njds, njde, & nims, nime, 1, 1, njms, njme, & nips, nipe, 1, 1, njps, njpe, & config_flags%shw, ngrid%imask_ystag, & .FALSE., .TRUE., & ngrid%i_parent_start, ngrid%j_parent_start, & ngrid%parent_grid_ratio, ngrid%parent_grid_ratio & ) ENDIF IF ( SIZE( grid%msfvx_inv, 1 ) * SIZE( grid%msfvx_inv, 2 ) .GT. 1 ) THEN CALL copy_fcnm ( & grid%msfvx_inv, & cids, cide, 1, 1, cjds, cjde, & cims, cime, 1, 1, cjms, cjme, & cips, cipe, 1, 1, cjps, cjpe, & ngrid%msfvx_inv, & nids, nide, 1, 1, njds, njde, & nims, nime, 1, 1, njms, njme, & nips, nipe, 1, 1, njps, njpe, & config_flags%shw, ngrid%imask_ystag, & .FALSE., .TRUE., & ngrid%i_parent_start, ngrid%j_parent_start, & ngrid%parent_grid_ratio, ngrid%parent_grid_ratio & ) ENDIF IF ( SIZE( grid%msfvy, 1 ) * SIZE( grid%msfvy, 2 ) .GT. 1 ) THEN CALL copy_fcnm ( & grid%msfvy, & cids, cide, 1, 1, cjds, cjde, & cims, cime, 1, 1, cjms, cjme, & cips, cipe, 1, 1, cjps, cjpe, & ngrid%msfvy, & nids, nide, 1, 1, njds, njde, & nims, nime, 1, 1, njms, njme, & nips, nipe, 1, 1, njps, njpe, & config_flags%shw, ngrid%imask_ystag, & .FALSE., .TRUE., & ngrid%i_parent_start, ngrid%j_parent_start, & ngrid%parent_grid_ratio, ngrid%parent_grid_ratio & ) ENDIF IF ( SIZE( grid%f, 1 ) * SIZE( grid%f, 2 ) .GT. 1 ) THEN CALL copy_fcnm ( & grid%f, & cids, cide, 1, 1, cjds, cjde, & cims, cime, 1, 1, cjms, cjme, & cips, cipe, 1, 1, cjps, cjpe, & ngrid%f, & nids, nide, 1, 1, njds, njde, & nims, nime, 1, 1, njms, njme, & nips, nipe, 1, 1, njps, njpe, & config_flags%shw, ngrid%imask_nostag, & .FALSE., .FALSE., & ngrid%i_parent_start, ngrid%j_parent_start, & ngrid%parent_grid_ratio, ngrid%parent_grid_ratio & ) ENDIF IF ( SIZE( grid%e, 1 ) * SIZE( grid%e, 2 ) .GT. 1 ) THEN CALL copy_fcnm ( & grid%e, & cids, cide, 1, 1, cjds, cjde, & cims, cime, 1, 1, cjms, cjme, & cips, cipe, 1, 1, cjps, cjpe, & ngrid%e, & nids, nide, 1, 1, njds, njde, & nims, nime, 1, 1, njms, njme, & nips, nipe, 1, 1, njps, njpe, & config_flags%shw, ngrid%imask_nostag, & .FALSE., .FALSE., & ngrid%i_parent_start, ngrid%j_parent_start, & ngrid%parent_grid_ratio, ngrid%parent_grid_ratio & ) ENDIF IF ( SIZE( grid%sina, 1 ) * SIZE( grid%sina, 2 ) .GT. 1 ) THEN CALL copy_fcnm ( & grid%sina, & cids, cide, 1, 1, cjds, cjde, & cims, cime, 1, 1, cjms, cjme, & cips, cipe, 1, 1, cjps, cjpe, & ngrid%sina, & nids, nide, 1, 1, njds, njde, & nims, nime, 1, 1, njms, njme, & nips, nipe, 1, 1, njps, njpe, & config_flags%shw, ngrid%imask_nostag, & .FALSE., .FALSE., & ngrid%i_parent_start, ngrid%j_parent_start, & ngrid%parent_grid_ratio, ngrid%parent_grid_ratio & ) ENDIF IF ( SIZE( grid%cosa, 1 ) * SIZE( grid%cosa, 2 ) .GT. 1 ) THEN CALL copy_fcnm ( & grid%cosa, & cids, cide, 1, 1, cjds, cjde, & cims, cime, 1, 1, cjms, cjme, & cips, cipe, 1, 1, cjps, cjpe, & ngrid%cosa, & nids, nide, 1, 1, njds, njde, & nims, nime, 1, 1, njms, njme, & nips, nipe, 1, 1, njps, njpe, & config_flags%shw, ngrid%imask_nostag, & .FALSE., .FALSE., & ngrid%i_parent_start, ngrid%j_parent_start, & ngrid%parent_grid_ratio, ngrid%parent_grid_ratio & ) ENDIF IF ( SIZE( grid%ht, 1 ) * SIZE( grid%ht, 2 ) .GT. 1 ) THEN CALL copy_fcn ( & grid%ht, & cids, cide, 1, 1, cjds, cjde, & cims, cime, 1, 1, cjms, cjme, & cips, cipe, 1, 1, cjps, cjpe, & ngrid%ht, & nids, nide, 1, 1, njds, njde, & nims, nime, 1, 1, njms, njme, & nips, nipe, 1, 1, njps, njpe, & config_flags%shw, ngrid%imask_nostag, & .FALSE., .FALSE., & ngrid%i_parent_start, ngrid%j_parent_start, & ngrid%parent_grid_ratio, ngrid%parent_grid_ratio & ) ENDIF IF ( SIZE( grid%tsk, 1 ) * SIZE( grid%tsk, 2 ) .GT. 1 ) THEN CALL copy_fcnm ( & grid%tsk, & cids, cide, 1, 1, cjds, cjde, & cims, cime, 1, 1, cjms, cjme, & cips, cipe, 1, 1, cjps, cjpe, & ngrid%tsk, & nids, nide, 1, 1, njds, njde, & nims, nime, 1, 1, njms, njme, & nips, nipe, 1, 1, njps, njpe, & config_flags%shw, ngrid%imask_nostag, & .FALSE., .FALSE., & ngrid%i_parent_start, ngrid%j_parent_start, & ngrid%parent_grid_ratio, ngrid%parent_grid_ratio & ) ENDIF IF ( SIZE( grid%rainc, 1 ) * SIZE( grid%rainc, 2 ) .GT. 1 ) THEN CALL copy_fcn ( & grid%rainc, & cids, cide, 1, 1, cjds, cjde, & cims, cime, 1, 1, cjms, cjme, & cips, cipe, 1, 1, cjps, cjpe, & ngrid%rainc, & nids, nide, 1, 1, njds, njde, & nims, nime, 1, 1, njms, njme, & nips, nipe, 1, 1, njps, njpe, & config_flags%shw, ngrid%imask_nostag, & .FALSE., .FALSE., & ngrid%i_parent_start, ngrid%j_parent_start, & ngrid%parent_grid_ratio, ngrid%parent_grid_ratio & ) ENDIF IF ( SIZE( grid%rainsh, 1 ) * SIZE( grid%rainsh, 2 ) .GT. 1 ) THEN CALL copy_fcn ( & grid%rainsh, & cids, cide, 1, 1, cjds, cjde, & cims, cime, 1, 1, cjms, cjme, & cips, cipe, 1, 1, cjps, cjpe, & ngrid%rainsh, & nids, nide, 1, 1, njds, njde, & nims, nime, 1, 1, njms, njme, & nips, nipe, 1, 1, njps, njpe, & config_flags%shw, ngrid%imask_nostag, & .FALSE., .FALSE., & ngrid%i_parent_start, ngrid%j_parent_start, & ngrid%parent_grid_ratio, ngrid%parent_grid_ratio & ) ENDIF IF ( SIZE( grid%rainnc, 1 ) * SIZE( grid%rainnc, 2 ) .GT. 1 ) THEN CALL copy_fcn ( & grid%rainnc, & cids, cide, 1, 1, cjds, cjde, & cims, cime, 1, 1, cjms, cjme, & cips, cipe, 1, 1, cjps, cjpe, & ngrid%rainnc, & nids, nide, 1, 1, njds, njde, & nims, nime, 1, 1, njms, njme, & nips, nipe, 1, 1, njps, njpe, & config_flags%shw, ngrid%imask_nostag, & .FALSE., .FALSE., & ngrid%i_parent_start, ngrid%j_parent_start, & ngrid%parent_grid_ratio, ngrid%parent_grid_ratio & ) ENDIF IF ( SIZE( grid%i_rainc, 1 ) * SIZE( grid%i_rainc, 2 ) .GT. 1 ) THEN CALL copy_fcni ( & grid%i_rainc, & cids, cide, 1, 1, cjds, cjde, & cims, cime, 1, 1, cjms, cjme, & cips, cipe, 1, 1, cjps, cjpe, & ngrid%i_rainc, & nids, nide, 1, 1, njds, njde, & nims, nime, 1, 1, njms, njme, & nips, nipe, 1, 1, njps, njpe, & config_flags%shw, ngrid%imask_nostag, & .FALSE., .FALSE., & ngrid%i_parent_start, ngrid%j_parent_start, & ngrid%parent_grid_ratio, ngrid%parent_grid_ratio & ) ENDIF IF ( SIZE( grid%i_rainnc, 1 ) * SIZE( grid%i_rainnc, 2 ) .GT. 1 ) THEN CALL copy_fcni ( & grid%i_rainnc, & cids, cide, 1, 1, cjds, cjde, & cims, cime, 1, 1, cjms, cjme, & cips, cipe, 1, 1, cjps, cjpe, & ngrid%i_rainnc, & nids, nide, 1, 1, njds, njde, & nims, nime, 1, 1, njms, njme, & nips, nipe, 1, 1, njps, njpe, & config_flags%shw, ngrid%imask_nostag, & .FALSE., .FALSE., & ngrid%i_parent_start, ngrid%j_parent_start, & ngrid%parent_grid_ratio, ngrid%parent_grid_ratio & ) ENDIF IF ( SIZE( grid%snownc, 1 ) * SIZE( grid%snownc, 2 ) .GT. 1 ) THEN CALL copy_fcn ( & grid%snownc, & cids, cide, 1, 1, cjds, cjde, & cims, cime, 1, 1, cjms, cjme, & cips, cipe, 1, 1, cjps, cjpe, & ngrid%snownc, & nids, nide, 1, 1, njds, njde, & nims, nime, 1, 1, njms, njme, & nips, nipe, 1, 1, njps, njpe, & config_flags%shw, ngrid%imask_nostag, & .FALSE., .FALSE., & ngrid%i_parent_start, ngrid%j_parent_start, & ngrid%parent_grid_ratio, ngrid%parent_grid_ratio & ) ENDIF IF ( SIZE( grid%graupelnc, 1 ) * SIZE( grid%graupelnc, 2 ) .GT. 1 ) THEN CALL copy_fcn ( & grid%graupelnc, & cids, cide, 1, 1, cjds, cjde, & cims, cime, 1, 1, cjms, cjme, & cips, cipe, 1, 1, cjps, cjpe, & ngrid%graupelnc, & nids, nide, 1, 1, njds, njde, & nims, nime, 1, 1, njms, njme, & nips, nipe, 1, 1, njps, njpe, & config_flags%shw, ngrid%imask_nostag, & .FALSE., .FALSE., & ngrid%i_parent_start, ngrid%j_parent_start, & ngrid%parent_grid_ratio, ngrid%parent_grid_ratio & ) ENDIF IF ( SIZE( grid%hailnc, 1 ) * SIZE( grid%hailnc, 2 ) .GT. 1 ) THEN CALL copy_fcn ( & grid%hailnc, & cids, cide, 1, 1, cjds, cjde, & cims, cime, 1, 1, cjms, cjme, & cips, cipe, 1, 1, cjps, cjpe, & ngrid%hailnc, & nids, nide, 1, 1, njds, njde, & nims, nime, 1, 1, njms, njme, & nips, nipe, 1, 1, njps, njpe, & config_flags%shw, ngrid%imask_nostag, & .FALSE., .FALSE., & ngrid%i_parent_start, ngrid%j_parent_start, & ngrid%parent_grid_ratio, ngrid%parent_grid_ratio & ) ENDIF IF ( SIZE( grid%refl_10cm, 1 ) * SIZE( grid%refl_10cm, 3 ) .GT. 1 ) THEN CALL copy_fcn ( & grid%refl_10cm, & cids, cide, ckds, ckde, cjds, cjde, & cims, cime, ckms, ckme, cjms, cjme, & cips, cipe, ckps, MIN( (ckde-1), ckpe ), cjps, cjpe, & ngrid%refl_10cm, & nids, nide, nkds, nkde, njds, njde, & nims, nime, nkms, nkme, njms, njme, & nips, nipe, nkps, MIN( (nkde-1), nkpe ), njps, njpe, & config_flags%shw, ngrid%imask_nostag, & .FALSE., .FALSE., & ngrid%i_parent_start, ngrid%j_parent_start, & ngrid%parent_grid_ratio, ngrid%parent_grid_ratio & ) ENDIF IF ( SIZE( grid%acswupt, 1 ) * SIZE( grid%acswupt, 2 ) .GT. 1 ) THEN CALL copy_fcn ( & grid%acswupt, & cids, cide, 1, 1, cjds, cjde, & cims, cime, 1, 1, cjms, cjme, & cips, cipe, 1, 1, cjps, cjpe, & ngrid%acswupt, & nids, nide, 1, 1, njds, njde, & nims, nime, 1, 1, njms, njme, & nips, nipe, 1, 1, njps, njpe, & config_flags%shw, ngrid%imask_nostag, & .FALSE., .FALSE., & ngrid%i_parent_start, ngrid%j_parent_start, & ngrid%parent_grid_ratio, ngrid%parent_grid_ratio & ) ENDIF IF ( SIZE( grid%acswuptc, 1 ) * SIZE( grid%acswuptc, 2 ) .GT. 1 ) THEN CALL copy_fcn ( & grid%acswuptc, & cids, cide, 1, 1, cjds, cjde, & cims, cime, 1, 1, cjms, cjme, & cips, cipe, 1, 1, cjps, cjpe, & ngrid%acswuptc, & nids, nide, 1, 1, njds, njde, & nims, nime, 1, 1, njms, njme, & nips, nipe, 1, 1, njps, njpe, & config_flags%shw, ngrid%imask_nostag, & .FALSE., .FALSE., & ngrid%i_parent_start, ngrid%j_parent_start, & ngrid%parent_grid_ratio, ngrid%parent_grid_ratio & ) ENDIF IF ( SIZE( grid%acswdnt, 1 ) * SIZE( grid%acswdnt, 2 ) .GT. 1 ) THEN CALL copy_fcn ( & grid%acswdnt, & cids, cide, 1, 1, cjds, cjde, & cims, cime, 1, 1, cjms, cjme, & cips, cipe, 1, 1, cjps, cjpe, & ngrid%acswdnt, & nids, nide, 1, 1, njds, njde, & nims, nime, 1, 1, njms, njme, & nips, nipe, 1, 1, njps, njpe, & config_flags%shw, ngrid%imask_nostag, & .FALSE., .FALSE., & ngrid%i_parent_start, ngrid%j_parent_start, & ngrid%parent_grid_ratio, ngrid%parent_grid_ratio & ) ENDIF IF ( SIZE( grid%acswdntc, 1 ) * SIZE( grid%acswdntc, 2 ) .GT. 1 ) THEN CALL copy_fcn ( & grid%acswdntc, & cids, cide, 1, 1, cjds, cjde, & cims, cime, 1, 1, cjms, cjme, & cips, cipe, 1, 1, cjps, cjpe, & ngrid%acswdntc, & nids, nide, 1, 1, njds, njde, & nims, nime, 1, 1, njms, njme, & nips, nipe, 1, 1, njps, njpe, & config_flags%shw, ngrid%imask_nostag, & .FALSE., .FALSE., & ngrid%i_parent_start, ngrid%j_parent_start, & ngrid%parent_grid_ratio, ngrid%parent_grid_ratio & ) ENDIF IF ( SIZE( grid%acswupb, 1 ) * SIZE( grid%acswupb, 2 ) .GT. 1 ) THEN CALL copy_fcn ( & grid%acswupb, & cids, cide, 1, 1, cjds, cjde, & cims, cime, 1, 1, cjms, cjme, & cips, cipe, 1, 1, cjps, cjpe, & ngrid%acswupb, & nids, nide, 1, 1, njds, njde, & nims, nime, 1, 1, njms, njme, & nips, nipe, 1, 1, njps, njpe, & config_flags%shw, ngrid%imask_nostag, & .FALSE., .FALSE., & ngrid%i_parent_start, ngrid%j_parent_start, & ngrid%parent_grid_ratio, ngrid%parent_grid_ratio & ) ENDIF IF ( SIZE( grid%acswupbc, 1 ) * SIZE( grid%acswupbc, 2 ) .GT. 1 ) THEN CALL copy_fcn ( & grid%acswupbc, & cids, cide, 1, 1, cjds, cjde, & cims, cime, 1, 1, cjms, cjme, & cips, cipe, 1, 1, cjps, cjpe, & ngrid%acswupbc, & nids, nide, 1, 1, njds, njde, & nims, nime, 1, 1, njms, njme, & nips, nipe, 1, 1, njps, njpe, & config_flags%shw, ngrid%imask_nostag, & .FALSE., .FALSE., & ngrid%i_parent_start, ngrid%j_parent_start, & ngrid%parent_grid_ratio, ngrid%parent_grid_ratio & ) ENDIF IF ( SIZE( grid%acswdnb, 1 ) * SIZE( grid%acswdnb, 2 ) .GT. 1 ) THEN CALL copy_fcn ( & grid%acswdnb, & cids, cide, 1, 1, cjds, cjde, & cims, cime, 1, 1, cjms, cjme, & cips, cipe, 1, 1, cjps, cjpe, & ngrid%acswdnb, & nids, nide, 1, 1, njds, njde, & nims, nime, 1, 1, njms, njme, & nips, nipe, 1, 1, njps, njpe, & config_flags%shw, ngrid%imask_nostag, & .FALSE., .FALSE., & ngrid%i_parent_start, ngrid%j_parent_start, & ngrid%parent_grid_ratio, ngrid%parent_grid_ratio & ) ENDIF IF ( SIZE( grid%acswdnbc, 1 ) * SIZE( grid%acswdnbc, 2 ) .GT. 1 ) THEN CALL copy_fcn ( & grid%acswdnbc, & cids, cide, 1, 1, cjds, cjde, & cims, cime, 1, 1, cjms, cjme, & cips, cipe, 1, 1, cjps, cjpe, & ngrid%acswdnbc, & nids, nide, 1, 1, njds, njde, & nims, nime, 1, 1, njms, njme, & nips, nipe, 1, 1, njps, njpe, & config_flags%shw, ngrid%imask_nostag, & .FALSE., .FALSE., & ngrid%i_parent_start, ngrid%j_parent_start, & ngrid%parent_grid_ratio, ngrid%parent_grid_ratio & ) ENDIF IF ( SIZE( grid%aclwupt, 1 ) * SIZE( grid%aclwupt, 2 ) .GT. 1 ) THEN CALL copy_fcn ( & grid%aclwupt, & cids, cide, 1, 1, cjds, cjde, & cims, cime, 1, 1, cjms, cjme, & cips, cipe, 1, 1, cjps, cjpe, & ngrid%aclwupt, & nids, nide, 1, 1, njds, njde, & nims, nime, 1, 1, njms, njme, & nips, nipe, 1, 1, njps, njpe, & config_flags%shw, ngrid%imask_nostag, & .FALSE., .FALSE., & ngrid%i_parent_start, ngrid%j_parent_start, & ngrid%parent_grid_ratio, ngrid%parent_grid_ratio & ) ENDIF IF ( SIZE( grid%aclwuptc, 1 ) * SIZE( grid%aclwuptc, 2 ) .GT. 1 ) THEN CALL copy_fcn ( & grid%aclwuptc, & cids, cide, 1, 1, cjds, cjde, & cims, cime, 1, 1, cjms, cjme, & cips, cipe, 1, 1, cjps, cjpe, & ngrid%aclwuptc, & nids, nide, 1, 1, njds, njde, & nims, nime, 1, 1, njms, njme, & nips, nipe, 1, 1, njps, njpe, & config_flags%shw, ngrid%imask_nostag, & .FALSE., .FALSE., & ngrid%i_parent_start, ngrid%j_parent_start, & ngrid%parent_grid_ratio, ngrid%parent_grid_ratio & ) ENDIF IF ( SIZE( grid%aclwdnt, 1 ) * SIZE( grid%aclwdnt, 2 ) .GT. 1 ) THEN CALL copy_fcn ( & grid%aclwdnt, & cids, cide, 1, 1, cjds, cjde, & cims, cime, 1, 1, cjms, cjme, & cips, cipe, 1, 1, cjps, cjpe, & ngrid%aclwdnt, & nids, nide, 1, 1, njds, njde, & nims, nime, 1, 1, njms, njme, & nips, nipe, 1, 1, njps, njpe, & config_flags%shw, ngrid%imask_nostag, & .FALSE., .FALSE., & ngrid%i_parent_start, ngrid%j_parent_start, & ngrid%parent_grid_ratio, ngrid%parent_grid_ratio & ) ENDIF IF ( SIZE( grid%aclwdntc, 1 ) * SIZE( grid%aclwdntc, 2 ) .GT. 1 ) THEN CALL copy_fcn ( & grid%aclwdntc, & cids, cide, 1, 1, cjds, cjde, & cims, cime, 1, 1, cjms, cjme, & cips, cipe, 1, 1, cjps, cjpe, & ngrid%aclwdntc, & nids, nide, 1, 1, njds, njde, & nims, nime, 1, 1, njms, njme, & nips, nipe, 1, 1, njps, njpe, & config_flags%shw, ngrid%imask_nostag, & .FALSE., .FALSE., & ngrid%i_parent_start, ngrid%j_parent_start, & ngrid%parent_grid_ratio, ngrid%parent_grid_ratio & ) ENDIF IF ( SIZE( grid%aclwupb, 1 ) * SIZE( grid%aclwupb, 2 ) .GT. 1 ) THEN CALL copy_fcn ( & grid%aclwupb, & cids, cide, 1, 1, cjds, cjde, & cims, cime, 1, 1, cjms, cjme, & cips, cipe, 1, 1, cjps, cjpe, & ngrid%aclwupb, & nids, nide, 1, 1, njds, njde, & nims, nime, 1, 1, njms, njme, & nips, nipe, 1, 1, njps, njpe, & config_flags%shw, ngrid%imask_nostag, & .FALSE., .FALSE., & ngrid%i_parent_start, ngrid%j_parent_start, & ngrid%parent_grid_ratio, ngrid%parent_grid_ratio & ) ENDIF IF ( SIZE( grid%aclwupbc, 1 ) * SIZE( grid%aclwupbc, 2 ) .GT. 1 ) THEN CALL copy_fcn ( & grid%aclwupbc, & cids, cide, 1, 1, cjds, cjde, & cims, cime, 1, 1, cjms, cjme, & cips, cipe, 1, 1, cjps, cjpe, & ngrid%aclwupbc, & nids, nide, 1, 1, njds, njde, & nims, nime, 1, 1, njms, njme, & nips, nipe, 1, 1, njps, njpe, & config_flags%shw, ngrid%imask_nostag, & .FALSE., .FALSE., & ngrid%i_parent_start, ngrid%j_parent_start, & ngrid%parent_grid_ratio, ngrid%parent_grid_ratio & ) ENDIF IF ( SIZE( grid%aclwdnb, 1 ) * SIZE( grid%aclwdnb, 2 ) .GT. 1 ) THEN CALL copy_fcn ( & grid%aclwdnb, & cids, cide, 1, 1, cjds, cjde, & cims, cime, 1, 1, cjms, cjme, & cips, cipe, 1, 1, cjps, cjpe, & ngrid%aclwdnb, & nids, nide, 1, 1, njds, njde, & nims, nime, 1, 1, njms, njme, & nips, nipe, 1, 1, njps, njpe, & config_flags%shw, ngrid%imask_nostag, & .FALSE., .FALSE., & ngrid%i_parent_start, ngrid%j_parent_start, & ngrid%parent_grid_ratio, ngrid%parent_grid_ratio & ) ENDIF IF ( SIZE( grid%aclwdnbc, 1 ) * SIZE( grid%aclwdnbc, 2 ) .GT. 1 ) THEN CALL copy_fcn ( & grid%aclwdnbc, & cids, cide, 1, 1, cjds, cjde, & cims, cime, 1, 1, cjms, cjme, & cips, cipe, 1, 1, cjps, cjpe, & ngrid%aclwdnbc, & nids, nide, 1, 1, njds, njde, & nims, nime, 1, 1, njms, njme, & nips, nipe, 1, 1, njps, njpe, & config_flags%shw, ngrid%imask_nostag, & .FALSE., .FALSE., & ngrid%i_parent_start, ngrid%j_parent_start, & ngrid%parent_grid_ratio, ngrid%parent_grid_ratio & ) ENDIF IF ( SIZE( grid%i_acswupt, 1 ) * SIZE( grid%i_acswupt, 2 ) .GT. 1 ) THEN CALL copy_fcni ( & grid%i_acswupt, & cids, cide, 1, 1, cjds, cjde, & cims, cime, 1, 1, cjms, cjme, & cips, cipe, 1, 1, cjps, cjpe, & ngrid%i_acswupt, & nids, nide, 1, 1, njds, njde, & nims, nime, 1, 1, njms, njme, & nips, nipe, 1, 1, njps, njpe, & config_flags%shw, ngrid%imask_nostag, & .FALSE., .FALSE., & ngrid%i_parent_start, ngrid%j_parent_start, & ngrid%parent_grid_ratio, ngrid%parent_grid_ratio & ) ENDIF IF ( SIZE( grid%i_acswuptc, 1 ) * SIZE( grid%i_acswuptc, 2 ) .GT. 1 ) THEN CALL copy_fcni ( & grid%i_acswuptc, & cids, cide, 1, 1, cjds, cjde, & cims, cime, 1, 1, cjms, cjme, & cips, cipe, 1, 1, cjps, cjpe, & ngrid%i_acswuptc, & nids, nide, 1, 1, njds, njde, & nims, nime, 1, 1, njms, njme, & nips, nipe, 1, 1, njps, njpe, & config_flags%shw, ngrid%imask_nostag, & .FALSE., .FALSE., & ngrid%i_parent_start, ngrid%j_parent_start, & ngrid%parent_grid_ratio, ngrid%parent_grid_ratio & ) ENDIF IF ( SIZE( grid%i_acswdnt, 1 ) * SIZE( grid%i_acswdnt, 2 ) .GT. 1 ) THEN CALL copy_fcni ( & grid%i_acswdnt, & cids, cide, 1, 1, cjds, cjde, & cims, cime, 1, 1, cjms, cjme, & cips, cipe, 1, 1, cjps, cjpe, & ngrid%i_acswdnt, & nids, nide, 1, 1, njds, njde, & nims, nime, 1, 1, njms, njme, & nips, nipe, 1, 1, njps, njpe, & config_flags%shw, ngrid%imask_nostag, & .FALSE., .FALSE., & ngrid%i_parent_start, ngrid%j_parent_start, & ngrid%parent_grid_ratio, ngrid%parent_grid_ratio & ) ENDIF IF ( SIZE( grid%i_acswdntc, 1 ) * SIZE( grid%i_acswdntc, 2 ) .GT. 1 ) THEN CALL copy_fcni ( & grid%i_acswdntc, & cids, cide, 1, 1, cjds, cjde, & cims, cime, 1, 1, cjms, cjme, & cips, cipe, 1, 1, cjps, cjpe, & ngrid%i_acswdntc, & nids, nide, 1, 1, njds, njde, & nims, nime, 1, 1, njms, njme, & nips, nipe, 1, 1, njps, njpe, & config_flags%shw, ngrid%imask_nostag, & .FALSE., .FALSE., & ngrid%i_parent_start, ngrid%j_parent_start, & ngrid%parent_grid_ratio, ngrid%parent_grid_ratio & ) ENDIF IF ( SIZE( grid%i_acswupb, 1 ) * SIZE( grid%i_acswupb, 2 ) .GT. 1 ) THEN CALL copy_fcni ( & grid%i_acswupb, & cids, cide, 1, 1, cjds, cjde, & cims, cime, 1, 1, cjms, cjme, & cips, cipe, 1, 1, cjps, cjpe, & ngrid%i_acswupb, & nids, nide, 1, 1, njds, njde, & nims, nime, 1, 1, njms, njme, & nips, nipe, 1, 1, njps, njpe, & config_flags%shw, ngrid%imask_nostag, & .FALSE., .FALSE., & ngrid%i_parent_start, ngrid%j_parent_start, & ngrid%parent_grid_ratio, ngrid%parent_grid_ratio & ) ENDIF IF ( SIZE( grid%i_acswupbc, 1 ) * SIZE( grid%i_acswupbc, 2 ) .GT. 1 ) THEN CALL copy_fcni ( & grid%i_acswupbc, & cids, cide, 1, 1, cjds, cjde, & cims, cime, 1, 1, cjms, cjme, & cips, cipe, 1, 1, cjps, cjpe, & ngrid%i_acswupbc, & nids, nide, 1, 1, njds, njde, & nims, nime, 1, 1, njms, njme, & nips, nipe, 1, 1, njps, njpe, & config_flags%shw, ngrid%imask_nostag, & .FALSE., .FALSE., & ngrid%i_parent_start, ngrid%j_parent_start, & ngrid%parent_grid_ratio, ngrid%parent_grid_ratio & ) ENDIF IF ( SIZE( grid%i_acswdnb, 1 ) * SIZE( grid%i_acswdnb, 2 ) .GT. 1 ) THEN CALL copy_fcni ( & grid%i_acswdnb, & cids, cide, 1, 1, cjds, cjde, & cims, cime, 1, 1, cjms, cjme, & cips, cipe, 1, 1, cjps, cjpe, & ngrid%i_acswdnb, & nids, nide, 1, 1, njds, njde, & nims, nime, 1, 1, njms, njme, & nips, nipe, 1, 1, njps, njpe, & config_flags%shw, ngrid%imask_nostag, & .FALSE., .FALSE., & ngrid%i_parent_start, ngrid%j_parent_start, & ngrid%parent_grid_ratio, ngrid%parent_grid_ratio & ) ENDIF IF ( SIZE( grid%i_acswdnbc, 1 ) * SIZE( grid%i_acswdnbc, 2 ) .GT. 1 ) THEN CALL copy_fcni ( & grid%i_acswdnbc, & cids, cide, 1, 1, cjds, cjde, & cims, cime, 1, 1, cjms, cjme, & cips, cipe, 1, 1, cjps, cjpe, & ngrid%i_acswdnbc, & nids, nide, 1, 1, njds, njde, & nims, nime, 1, 1, njms, njme, & nips, nipe, 1, 1, njps, njpe, & config_flags%shw, ngrid%imask_nostag, & .FALSE., .FALSE., & ngrid%i_parent_start, ngrid%j_parent_start, & ngrid%parent_grid_ratio, ngrid%parent_grid_ratio & ) ENDIF IF ( SIZE( grid%i_aclwupt, 1 ) * SIZE( grid%i_aclwupt, 2 ) .GT. 1 ) THEN CALL copy_fcni ( & grid%i_aclwupt, & cids, cide, 1, 1, cjds, cjde, & cims, cime, 1, 1, cjms, cjme, & cips, cipe, 1, 1, cjps, cjpe, & ngrid%i_aclwupt, & nids, nide, 1, 1, njds, njde, & nims, nime, 1, 1, njms, njme, & nips, nipe, 1, 1, njps, njpe, & config_flags%shw, ngrid%imask_nostag, & .FALSE., .FALSE., & ngrid%i_parent_start, ngrid%j_parent_start, & ngrid%parent_grid_ratio, ngrid%parent_grid_ratio & ) ENDIF IF ( SIZE( grid%i_aclwuptc, 1 ) * SIZE( grid%i_aclwuptc, 2 ) .GT. 1 ) THEN CALL copy_fcni ( & grid%i_aclwuptc, & cids, cide, 1, 1, cjds, cjde, & cims, cime, 1, 1, cjms, cjme, & cips, cipe, 1, 1, cjps, cjpe, & ngrid%i_aclwuptc, & nids, nide, 1, 1, njds, njde, & nims, nime, 1, 1, njms, njme, & nips, nipe, 1, 1, njps, njpe, & config_flags%shw, ngrid%imask_nostag, & .FALSE., .FALSE., & ngrid%i_parent_start, ngrid%j_parent_start, & ngrid%parent_grid_ratio, ngrid%parent_grid_ratio & ) ENDIF IF ( SIZE( grid%i_aclwdnt, 1 ) * SIZE( grid%i_aclwdnt, 2 ) .GT. 1 ) THEN CALL copy_fcni ( & grid%i_aclwdnt, & cids, cide, 1, 1, cjds, cjde, & cims, cime, 1, 1, cjms, cjme, & cips, cipe, 1, 1, cjps, cjpe, & ngrid%i_aclwdnt, & nids, nide, 1, 1, njds, njde, & nims, nime, 1, 1, njms, njme, & nips, nipe, 1, 1, njps, njpe, & config_flags%shw, ngrid%imask_nostag, & .FALSE., .FALSE., & ngrid%i_parent_start, ngrid%j_parent_start, & ngrid%parent_grid_ratio, ngrid%parent_grid_ratio & ) ENDIF IF ( SIZE( grid%i_aclwdntc, 1 ) * SIZE( grid%i_aclwdntc, 2 ) .GT. 1 ) THEN CALL copy_fcni ( & grid%i_aclwdntc, & cids, cide, 1, 1, cjds, cjde, & cims, cime, 1, 1, cjms, cjme, & cips, cipe, 1, 1, cjps, cjpe, & ngrid%i_aclwdntc, & nids, nide, 1, 1, njds, njde, & nims, nime, 1, 1, njms, njme, & nips, nipe, 1, 1, njps, njpe, & config_flags%shw, ngrid%imask_nostag, & .FALSE., .FALSE., & ngrid%i_parent_start, ngrid%j_parent_start, & ngrid%parent_grid_ratio, ngrid%parent_grid_ratio & ) ENDIF IF ( SIZE( grid%i_aclwupb, 1 ) * SIZE( grid%i_aclwupb, 2 ) .GT. 1 ) THEN CALL copy_fcni ( & grid%i_aclwupb, & cids, cide, 1, 1, cjds, cjde, & cims, cime, 1, 1, cjms, cjme, & cips, cipe, 1, 1, cjps, cjpe, & ngrid%i_aclwupb, & nids, nide, 1, 1, njds, njde, & nims, nime, 1, 1, njms, njme, & nips, nipe, 1, 1, njps, njpe, & config_flags%shw, ngrid%imask_nostag, & .FALSE., .FALSE., & ngrid%i_parent_start, ngrid%j_parent_start, & ngrid%parent_grid_ratio, ngrid%parent_grid_ratio & ) ENDIF IF ( SIZE( grid%i_aclwupbc, 1 ) * SIZE( grid%i_aclwupbc, 2 ) .GT. 1 ) THEN CALL copy_fcni ( & grid%i_aclwupbc, & cids, cide, 1, 1, cjds, cjde, & cims, cime, 1, 1, cjms, cjme, & cips, cipe, 1, 1, cjps, cjpe, & ngrid%i_aclwupbc, & nids, nide, 1, 1, njds, njde, & nims, nime, 1, 1, njms, njme, & nips, nipe, 1, 1, njps, njpe, & config_flags%shw, ngrid%imask_nostag, & .FALSE., .FALSE., & ngrid%i_parent_start, ngrid%j_parent_start, & ngrid%parent_grid_ratio, ngrid%parent_grid_ratio & ) ENDIF IF ( SIZE( grid%i_aclwdnb, 1 ) * SIZE( grid%i_aclwdnb, 2 ) .GT. 1 ) THEN CALL copy_fcni ( & grid%i_aclwdnb, & cids, cide, 1, 1, cjds, cjde, & cims, cime, 1, 1, cjms, cjme, & cips, cipe, 1, 1, cjps, cjpe, & ngrid%i_aclwdnb, & nids, nide, 1, 1, njds, njde, & nims, nime, 1, 1, njms, njme, & nips, nipe, 1, 1, njps, njpe, & config_flags%shw, ngrid%imask_nostag, & .FALSE., .FALSE., & ngrid%i_parent_start, ngrid%j_parent_start, & ngrid%parent_grid_ratio, ngrid%parent_grid_ratio & ) ENDIF IF ( SIZE( grid%i_aclwdnbc, 1 ) * SIZE( grid%i_aclwdnbc, 2 ) .GT. 1 ) THEN CALL copy_fcni ( & grid%i_aclwdnbc, & cids, cide, 1, 1, cjds, cjde, & cims, cime, 1, 1, cjms, cjme, & cips, cipe, 1, 1, cjps, cjpe, & ngrid%i_aclwdnbc, & nids, nide, 1, 1, njds, njde, & nims, nime, 1, 1, njms, njme, & nips, nipe, 1, 1, njps, njpe, & config_flags%shw, ngrid%imask_nostag, & .FALSE., .FALSE., & ngrid%i_parent_start, ngrid%j_parent_start, & ngrid%parent_grid_ratio, ngrid%parent_grid_ratio & ) ENDIF IF ( SIZE( grid%swupt, 1 ) * SIZE( grid%swupt, 2 ) .GT. 1 ) THEN CALL copy_fcn ( & grid%swupt, & cids, cide, 1, 1, cjds, cjde, & cims, cime, 1, 1, cjms, cjme, & cips, cipe, 1, 1, cjps, cjpe, & ngrid%swupt, & nids, nide, 1, 1, njds, njde, & nims, nime, 1, 1, njms, njme, & nips, nipe, 1, 1, njps, njpe, & config_flags%shw, ngrid%imask_nostag, & .FALSE., .FALSE., & ngrid%i_parent_start, ngrid%j_parent_start, & ngrid%parent_grid_ratio, ngrid%parent_grid_ratio & ) ENDIF IF ( SIZE( grid%swuptc, 1 ) * SIZE( grid%swuptc, 2 ) .GT. 1 ) THEN CALL copy_fcn ( & grid%swuptc, & cids, cide, 1, 1, cjds, cjde, & cims, cime, 1, 1, cjms, cjme, & cips, cipe, 1, 1, cjps, cjpe, & ngrid%swuptc, & nids, nide, 1, 1, njds, njde, & nims, nime, 1, 1, njms, njme, & nips, nipe, 1, 1, njps, njpe, & config_flags%shw, ngrid%imask_nostag, & .FALSE., .FALSE., & ngrid%i_parent_start, ngrid%j_parent_start, & ngrid%parent_grid_ratio, ngrid%parent_grid_ratio & ) ENDIF IF ( SIZE( grid%swdnt, 1 ) * SIZE( grid%swdnt, 2 ) .GT. 1 ) THEN CALL copy_fcn ( & grid%swdnt, & cids, cide, 1, 1, cjds, cjde, & cims, cime, 1, 1, cjms, cjme, & cips, cipe, 1, 1, cjps, cjpe, & ngrid%swdnt, & nids, nide, 1, 1, njds, njde, & nims, nime, 1, 1, njms, njme, & nips, nipe, 1, 1, njps, njpe, & config_flags%shw, ngrid%imask_nostag, & .FALSE., .FALSE., & ngrid%i_parent_start, ngrid%j_parent_start, & ngrid%parent_grid_ratio, ngrid%parent_grid_ratio & ) ENDIF IF ( SIZE( grid%swdntc, 1 ) * SIZE( grid%swdntc, 2 ) .GT. 1 ) THEN CALL copy_fcn ( & grid%swdntc, & cids, cide, 1, 1, cjds, cjde, & cims, cime, 1, 1, cjms, cjme, & cips, cipe, 1, 1, cjps, cjpe, & ngrid%swdntc, & nids, nide, 1, 1, njds, njde, & nims, nime, 1, 1, njms, njme, & nips, nipe, 1, 1, njps, njpe, & config_flags%shw, ngrid%imask_nostag, & .FALSE., .FALSE., & ngrid%i_parent_start, ngrid%j_parent_start, & ngrid%parent_grid_ratio, ngrid%parent_grid_ratio & ) ENDIF IF ( SIZE( grid%swupb, 1 ) * SIZE( grid%swupb, 2 ) .GT. 1 ) THEN CALL copy_fcn ( & grid%swupb, & cids, cide, 1, 1, cjds, cjde, & cims, cime, 1, 1, cjms, cjme, & cips, cipe, 1, 1, cjps, cjpe, & ngrid%swupb, & nids, nide, 1, 1, njds, njde, & nims, nime, 1, 1, njms, njme, & nips, nipe, 1, 1, njps, njpe, & config_flags%shw, ngrid%imask_nostag, & .FALSE., .FALSE., & ngrid%i_parent_start, ngrid%j_parent_start, & ngrid%parent_grid_ratio, ngrid%parent_grid_ratio & ) ENDIF IF ( SIZE( grid%swupbc, 1 ) * SIZE( grid%swupbc, 2 ) .GT. 1 ) THEN CALL copy_fcn ( & grid%swupbc, & cids, cide, 1, 1, cjds, cjde, & cims, cime, 1, 1, cjms, cjme, & cips, cipe, 1, 1, cjps, cjpe, & ngrid%swupbc, & nids, nide, 1, 1, njds, njde, & nims, nime, 1, 1, njms, njme, & nips, nipe, 1, 1, njps, njpe, & config_flags%shw, ngrid%imask_nostag, & .FALSE., .FALSE., & ngrid%i_parent_start, ngrid%j_parent_start, & ngrid%parent_grid_ratio, ngrid%parent_grid_ratio & ) ENDIF IF ( SIZE( grid%swdnb, 1 ) * SIZE( grid%swdnb, 2 ) .GT. 1 ) THEN CALL copy_fcn ( & grid%swdnb, & cids, cide, 1, 1, cjds, cjde, & cims, cime, 1, 1, cjms, cjme, & cips, cipe, 1, 1, cjps, cjpe, & ngrid%swdnb, & nids, nide, 1, 1, njds, njde, & nims, nime, 1, 1, njms, njme, & nips, nipe, 1, 1, njps, njpe, & config_flags%shw, ngrid%imask_nostag, & .FALSE., .FALSE., & ngrid%i_parent_start, ngrid%j_parent_start, & ngrid%parent_grid_ratio, ngrid%parent_grid_ratio & ) ENDIF IF ( SIZE( grid%swdnbc, 1 ) * SIZE( grid%swdnbc, 2 ) .GT. 1 ) THEN CALL copy_fcn ( & grid%swdnbc, & cids, cide, 1, 1, cjds, cjde, & cims, cime, 1, 1, cjms, cjme, & cips, cipe, 1, 1, cjps, cjpe, & ngrid%swdnbc, & nids, nide, 1, 1, njds, njde, & nims, nime, 1, 1, njms, njme, & nips, nipe, 1, 1, njps, njpe, & config_flags%shw, ngrid%imask_nostag, & .FALSE., .FALSE., & ngrid%i_parent_start, ngrid%j_parent_start, & ngrid%parent_grid_ratio, ngrid%parent_grid_ratio & ) ENDIF IF ( SIZE( grid%lwupt, 1 ) * SIZE( grid%lwupt, 2 ) .GT. 1 ) THEN CALL copy_fcn ( & grid%lwupt, & cids, cide, 1, 1, cjds, cjde, & cims, cime, 1, 1, cjms, cjme, & cips, cipe, 1, 1, cjps, cjpe, & ngrid%lwupt, & nids, nide, 1, 1, njds, njde, & nims, nime, 1, 1, njms, njme, & nips, nipe, 1, 1, njps, njpe, & config_flags%shw, ngrid%imask_nostag, & .FALSE., .FALSE., & ngrid%i_parent_start, ngrid%j_parent_start, & ngrid%parent_grid_ratio, ngrid%parent_grid_ratio & ) ENDIF IF ( SIZE( grid%lwuptc, 1 ) * SIZE( grid%lwuptc, 2 ) .GT. 1 ) THEN CALL copy_fcn ( & grid%lwuptc, & cids, cide, 1, 1, cjds, cjde, & cims, cime, 1, 1, cjms, cjme, & cips, cipe, 1, 1, cjps, cjpe, & ngrid%lwuptc, & nids, nide, 1, 1, njds, njde, & nims, nime, 1, 1, njms, njme, & nips, nipe, 1, 1, njps, njpe, & config_flags%shw, ngrid%imask_nostag, & .FALSE., .FALSE., & ngrid%i_parent_start, ngrid%j_parent_start, & ngrid%parent_grid_ratio, ngrid%parent_grid_ratio & ) ENDIF IF ( SIZE( grid%lwdnt, 1 ) * SIZE( grid%lwdnt, 2 ) .GT. 1 ) THEN CALL copy_fcn ( & grid%lwdnt, & cids, cide, 1, 1, cjds, cjde, & cims, cime, 1, 1, cjms, cjme, & cips, cipe, 1, 1, cjps, cjpe, & ngrid%lwdnt, & nids, nide, 1, 1, njds, njde, & nims, nime, 1, 1, njms, njme, & nips, nipe, 1, 1, njps, njpe, & config_flags%shw, ngrid%imask_nostag, & .FALSE., .FALSE., & ngrid%i_parent_start, ngrid%j_parent_start, & ngrid%parent_grid_ratio, ngrid%parent_grid_ratio & ) ENDIF IF ( SIZE( grid%lwdntc, 1 ) * SIZE( grid%lwdntc, 2 ) .GT. 1 ) THEN CALL copy_fcn ( & grid%lwdntc, & cids, cide, 1, 1, cjds, cjde, & cims, cime, 1, 1, cjms, cjme, & cips, cipe, 1, 1, cjps, cjpe, & ngrid%lwdntc, & nids, nide, 1, 1, njds, njde, & nims, nime, 1, 1, njms, njme, & nips, nipe, 1, 1, njps, njpe, & config_flags%shw, ngrid%imask_nostag, & .FALSE., .FALSE., & ngrid%i_parent_start, ngrid%j_parent_start, & ngrid%parent_grid_ratio, ngrid%parent_grid_ratio & ) ENDIF IF ( SIZE( grid%lwupb, 1 ) * SIZE( grid%lwupb, 2 ) .GT. 1 ) THEN CALL copy_fcn ( & grid%lwupb, & cids, cide, 1, 1, cjds, cjde, & cims, cime, 1, 1, cjms, cjme, & cips, cipe, 1, 1, cjps, cjpe, & ngrid%lwupb, & nids, nide, 1, 1, njds, njde, & nims, nime, 1, 1, njms, njme, & nips, nipe, 1, 1, njps, njpe, & config_flags%shw, ngrid%imask_nostag, & .FALSE., .FALSE., & ngrid%i_parent_start, ngrid%j_parent_start, & ngrid%parent_grid_ratio, ngrid%parent_grid_ratio & ) ENDIF IF ( SIZE( grid%lwupbc, 1 ) * SIZE( grid%lwupbc, 2 ) .GT. 1 ) THEN CALL copy_fcn ( & grid%lwupbc, & cids, cide, 1, 1, cjds, cjde, & cims, cime, 1, 1, cjms, cjme, & cips, cipe, 1, 1, cjps, cjpe, & ngrid%lwupbc, & nids, nide, 1, 1, njds, njde, & nims, nime, 1, 1, njms, njme, & nips, nipe, 1, 1, njps, njpe, & config_flags%shw, ngrid%imask_nostag, & .FALSE., .FALSE., & ngrid%i_parent_start, ngrid%j_parent_start, & ngrid%parent_grid_ratio, ngrid%parent_grid_ratio & ) ENDIF IF ( SIZE( grid%lwdnb, 1 ) * SIZE( grid%lwdnb, 2 ) .GT. 1 ) THEN CALL copy_fcn ( & grid%lwdnb, & cids, cide, 1, 1, cjds, cjde, & cims, cime, 1, 1, cjms, cjme, & cips, cipe, 1, 1, cjps, cjpe, & ngrid%lwdnb, & nids, nide, 1, 1, njds, njde, & nims, nime, 1, 1, njms, njme, & nips, nipe, 1, 1, njps, njpe, & config_flags%shw, ngrid%imask_nostag, & .FALSE., .FALSE., & ngrid%i_parent_start, ngrid%j_parent_start, & ngrid%parent_grid_ratio, ngrid%parent_grid_ratio & ) ENDIF IF ( SIZE( grid%lwdnbc, 1 ) * SIZE( grid%lwdnbc, 2 ) .GT. 1 ) THEN CALL copy_fcn ( & grid%lwdnbc, & cids, cide, 1, 1, cjds, cjde, & cims, cime, 1, 1, cjms, cjme, & cips, cipe, 1, 1, cjps, cjpe, & ngrid%lwdnbc, & nids, nide, 1, 1, njds, njde, & nims, nime, 1, 1, njms, njme, & nips, nipe, 1, 1, njps, njpe, & config_flags%shw, ngrid%imask_nostag, & .FALSE., .FALSE., & ngrid%i_parent_start, ngrid%j_parent_start, & ngrid%parent_grid_ratio, ngrid%parent_grid_ratio & ) ENDIF IF ( SIZE( grid%xlat, 1 ) * SIZE( grid%xlat, 2 ) .GT. 1 ) THEN CALL copy_fcnm ( & grid%xlat, & cids, cide, 1, 1, cjds, cjde, & cims, cime, 1, 1, cjms, cjme, & cips, cipe, 1, 1, cjps, cjpe, & ngrid%xlat, & nids, nide, 1, 1, njds, njde, & nims, nime, 1, 1, njms, njme, & nips, nipe, 1, 1, njps, njpe, & config_flags%shw, ngrid%imask_nostag, & .FALSE., .FALSE., & ngrid%i_parent_start, ngrid%j_parent_start, & ngrid%parent_grid_ratio, ngrid%parent_grid_ratio & ) ENDIF IF ( SIZE( grid%xlong, 1 ) * SIZE( grid%xlong, 2 ) .GT. 1 ) THEN CALL copy_fcnm ( & grid%xlong, & cids, cide, 1, 1, cjds, cjde, & cims, cime, 1, 1, cjms, cjme, & cips, cipe, 1, 1, cjps, cjpe, & ngrid%xlong, & nids, nide, 1, 1, njds, njde, & nims, nime, 1, 1, njms, njme, & nips, nipe, 1, 1, njps, njpe, & config_flags%shw, ngrid%imask_nostag, & .FALSE., .FALSE., & ngrid%i_parent_start, ngrid%j_parent_start, & ngrid%parent_grid_ratio, ngrid%parent_grid_ratio & ) ENDIF IF ( SIZE( grid%xlat_u, 1 ) * SIZE( grid%xlat_u, 2 ) .GT. 1 ) THEN CALL copy_fcnm ( & grid%xlat_u, & cids, cide, 1, 1, cjds, cjde, & cims, cime, 1, 1, cjms, cjme, & cips, cipe, 1, 1, cjps, cjpe, & ngrid%xlat_u, & nids, nide, 1, 1, njds, njde, & nims, nime, 1, 1, njms, njme, & nips, nipe, 1, 1, njps, njpe, & config_flags%shw, ngrid%imask_xstag, & .TRUE., .FALSE., & ngrid%i_parent_start, ngrid%j_parent_start, & ngrid%parent_grid_ratio, ngrid%parent_grid_ratio & ) ENDIF IF ( SIZE( grid%xlong_u, 1 ) * SIZE( grid%xlong_u, 2 ) .GT. 1 ) THEN CALL copy_fcnm ( & grid%xlong_u, & cids, cide, 1, 1, cjds, cjde, & cims, cime, 1, 1, cjms, cjme, & cips, cipe, 1, 1, cjps, cjpe, & ngrid%xlong_u, & nids, nide, 1, 1, njds, njde, & nims, nime, 1, 1, njms, njme, & nips, nipe, 1, 1, njps, njpe, & config_flags%shw, ngrid%imask_xstag, & .TRUE., .FALSE., & ngrid%i_parent_start, ngrid%j_parent_start, & ngrid%parent_grid_ratio, ngrid%parent_grid_ratio & ) ENDIF IF ( SIZE( grid%xlat_v, 1 ) * SIZE( grid%xlat_v, 2 ) .GT. 1 ) THEN CALL copy_fcnm ( & grid%xlat_v, & cids, cide, 1, 1, cjds, cjde, & cims, cime, 1, 1, cjms, cjme, & cips, cipe, 1, 1, cjps, cjpe, & ngrid%xlat_v, & nids, nide, 1, 1, njds, njde, & nims, nime, 1, 1, njms, njme, & nips, nipe, 1, 1, njps, njpe, & config_flags%shw, ngrid%imask_ystag, & .FALSE., .TRUE., & ngrid%i_parent_start, ngrid%j_parent_start, & ngrid%parent_grid_ratio, ngrid%parent_grid_ratio & ) ENDIF IF ( SIZE( grid%xlong_v, 1 ) * SIZE( grid%xlong_v, 2 ) .GT. 1 ) THEN CALL copy_fcnm ( & grid%xlong_v, & cids, cide, 1, 1, cjds, cjde, & cims, cime, 1, 1, cjms, cjme, & cips, cipe, 1, 1, cjps, cjpe, & ngrid%xlong_v, & nids, nide, 1, 1, njds, njde, & nims, nime, 1, 1, njms, njme, & nips, nipe, 1, 1, njps, njpe, & config_flags%shw, ngrid%imask_ystag, & .FALSE., .TRUE., & ngrid%i_parent_start, ngrid%j_parent_start, & ngrid%parent_grid_ratio, ngrid%parent_grid_ratio & ) ENDIF IF ( SIZE( grid%clat, 1 ) * SIZE( grid%clat, 2 ) .GT. 1 ) THEN CALL copy_fcnm ( & grid%clat, & cids, cide, 1, 1, cjds, cjde, & cims, cime, 1, 1, cjms, cjme, & cips, cipe, 1, 1, cjps, cjpe, & ngrid%clat, & nids, nide, 1, 1, njds, njde, & nims, nime, 1, 1, njms, njme, & nips, nipe, 1, 1, njps, njpe, & config_flags%shw, ngrid%imask_nostag, & .FALSE., .FALSE., & ngrid%i_parent_start, ngrid%j_parent_start, & ngrid%parent_grid_ratio, ngrid%parent_grid_ratio & ) ENDIF IF ( SIZE( grid%isnowxy, 1 ) * SIZE( grid%isnowxy, 2 ) .GT. 1 ) THEN CALL copy_fcnm ( & grid%isnowxy, & cids, cide, 1, 1, cjds, cjde, & cims, cime, 1, 1, cjms, cjme, & cips, cipe, 1, 1, cjps, cjpe, & ngrid%isnowxy, & nids, nide, 1, 1, njds, njde, & nims, nime, 1, 1, njms, njme, & nips, nipe, 1, 1, njps, njpe, & config_flags%shw, ngrid%imask_nostag, & .FALSE., .FALSE., & ngrid%i_parent_start, ngrid%j_parent_start, & ngrid%parent_grid_ratio, ngrid%parent_grid_ratio & ) ENDIF IF ( SIZE( grid%tvxy, 1 ) * SIZE( grid%tvxy, 2 ) .GT. 1 ) THEN CALL copy_fcnm ( & grid%tvxy, & cids, cide, 1, 1, cjds, cjde, & cims, cime, 1, 1, cjms, cjme, & cips, cipe, 1, 1, cjps, cjpe, & ngrid%tvxy, & nids, nide, 1, 1, njds, njde, & nims, nime, 1, 1, njms, njme, & nips, nipe, 1, 1, njps, njpe, & config_flags%shw, ngrid%imask_nostag, & .FALSE., .FALSE., & ngrid%i_parent_start, ngrid%j_parent_start, & ngrid%parent_grid_ratio, ngrid%parent_grid_ratio & ) ENDIF IF ( SIZE( grid%tgxy, 1 ) * SIZE( grid%tgxy, 2 ) .GT. 1 ) THEN CALL copy_fcnm ( & grid%tgxy, & cids, cide, 1, 1, cjds, cjde, & cims, cime, 1, 1, cjms, cjme, & cips, cipe, 1, 1, cjps, cjpe, & ngrid%tgxy, & nids, nide, 1, 1, njds, njde, & nims, nime, 1, 1, njms, njme, & nips, nipe, 1, 1, njps, njpe, & config_flags%shw, ngrid%imask_nostag, & .FALSE., .FALSE., & ngrid%i_parent_start, ngrid%j_parent_start, & ngrid%parent_grid_ratio, ngrid%parent_grid_ratio & ) ENDIF IF ( SIZE( grid%canliqxy, 1 ) * SIZE( grid%canliqxy, 2 ) .GT. 1 ) THEN CALL copy_fcnm ( & grid%canliqxy, & cids, cide, 1, 1, cjds, cjde, & cims, cime, 1, 1, cjms, cjme, & cips, cipe, 1, 1, cjps, cjpe, & ngrid%canliqxy, & nids, nide, 1, 1, njds, njde, & nims, nime, 1, 1, njms, njme, & nips, nipe, 1, 1, njps, njpe, & config_flags%shw, ngrid%imask_nostag, & .FALSE., .FALSE., & ngrid%i_parent_start, ngrid%j_parent_start, & ngrid%parent_grid_ratio, ngrid%parent_grid_ratio & ) ENDIF IF ( SIZE( grid%canicexy, 1 ) * SIZE( grid%canicexy, 2 ) .GT. 1 ) THEN CALL copy_fcnm ( & grid%canicexy, & cids, cide, 1, 1, cjds, cjde, & cims, cime, 1, 1, cjms, cjme, & cips, cipe, 1, 1, cjps, cjpe, & ngrid%canicexy, & nids, nide, 1, 1, njds, njde, & nims, nime, 1, 1, njms, njme, & nips, nipe, 1, 1, njps, njpe, & config_flags%shw, ngrid%imask_nostag, & .FALSE., .FALSE., & ngrid%i_parent_start, ngrid%j_parent_start, & ngrid%parent_grid_ratio, ngrid%parent_grid_ratio & ) ENDIF IF ( SIZE( grid%eahxy, 1 ) * SIZE( grid%eahxy, 2 ) .GT. 1 ) THEN CALL copy_fcnm ( & grid%eahxy, & cids, cide, 1, 1, cjds, cjde, & cims, cime, 1, 1, cjms, cjme, & cips, cipe, 1, 1, cjps, cjpe, & ngrid%eahxy, & nids, nide, 1, 1, njds, njde, & nims, nime, 1, 1, njms, njme, & nips, nipe, 1, 1, njps, njpe, & config_flags%shw, ngrid%imask_nostag, & .FALSE., .FALSE., & ngrid%i_parent_start, ngrid%j_parent_start, & ngrid%parent_grid_ratio, ngrid%parent_grid_ratio & ) ENDIF IF ( SIZE( grid%tahxy, 1 ) * SIZE( grid%tahxy, 2 ) .GT. 1 ) THEN CALL copy_fcnm ( & grid%tahxy, & cids, cide, 1, 1, cjds, cjde, & cims, cime, 1, 1, cjms, cjme, & cips, cipe, 1, 1, cjps, cjpe, & ngrid%tahxy, & nids, nide, 1, 1, njds, njde, & nims, nime, 1, 1, njms, njme, & nips, nipe, 1, 1, njps, njpe, & config_flags%shw, ngrid%imask_nostag, & .FALSE., .FALSE., & ngrid%i_parent_start, ngrid%j_parent_start, & ngrid%parent_grid_ratio, ngrid%parent_grid_ratio & ) ENDIF IF ( SIZE( grid%cmxy, 1 ) * SIZE( grid%cmxy, 2 ) .GT. 1 ) THEN CALL copy_fcnm ( & grid%cmxy, & cids, cide, 1, 1, cjds, cjde, & cims, cime, 1, 1, cjms, cjme, & cips, cipe, 1, 1, cjps, cjpe, & ngrid%cmxy, & nids, nide, 1, 1, njds, njde, & nims, nime, 1, 1, njms, njme, & nips, nipe, 1, 1, njps, njpe, & config_flags%shw, ngrid%imask_nostag, & .FALSE., .FALSE., & ngrid%i_parent_start, ngrid%j_parent_start, & ngrid%parent_grid_ratio, ngrid%parent_grid_ratio & ) ENDIF IF ( SIZE( grid%chxy, 1 ) * SIZE( grid%chxy, 2 ) .GT. 1 ) THEN CALL copy_fcnm ( & grid%chxy, & cids, cide, 1, 1, cjds, cjde, & cims, cime, 1, 1, cjms, cjme, & cips, cipe, 1, 1, cjps, cjpe, & ngrid%chxy, & nids, nide, 1, 1, njds, njde, & nims, nime, 1, 1, njms, njme, & nips, nipe, 1, 1, njps, njpe, & config_flags%shw, ngrid%imask_nostag, & .FALSE., .FALSE., & ngrid%i_parent_start, ngrid%j_parent_start, & ngrid%parent_grid_ratio, ngrid%parent_grid_ratio & ) ENDIF IF ( SIZE( grid%fwetxy, 1 ) * SIZE( grid%fwetxy, 2 ) .GT. 1 ) THEN CALL copy_fcnm ( & grid%fwetxy, & cids, cide, 1, 1, cjds, cjde, & cims, cime, 1, 1, cjms, cjme, & cips, cipe, 1, 1, cjps, cjpe, & ngrid%fwetxy, & nids, nide, 1, 1, njds, njde, & nims, nime, 1, 1, njms, njme, & nips, nipe, 1, 1, njps, njpe, & config_flags%shw, ngrid%imask_nostag, & .FALSE., .FALSE., & ngrid%i_parent_start, ngrid%j_parent_start, & ngrid%parent_grid_ratio, ngrid%parent_grid_ratio & ) ENDIF IF ( SIZE( grid%sneqvoxy, 1 ) * SIZE( grid%sneqvoxy, 2 ) .GT. 1 ) THEN CALL copy_fcnm ( & grid%sneqvoxy, & cids, cide, 1, 1, cjds, cjde, & cims, cime, 1, 1, cjms, cjme, & cips, cipe, 1, 1, cjps, cjpe, & ngrid%sneqvoxy, & nids, nide, 1, 1, njds, njde, & nims, nime, 1, 1, njms, njme, & nips, nipe, 1, 1, njps, njpe, & config_flags%shw, ngrid%imask_nostag, & .FALSE., .FALSE., & ngrid%i_parent_start, ngrid%j_parent_start, & ngrid%parent_grid_ratio, ngrid%parent_grid_ratio & ) ENDIF IF ( SIZE( grid%alboldxy, 1 ) * SIZE( grid%alboldxy, 2 ) .GT. 1 ) THEN CALL copy_fcnm ( & grid%alboldxy, & cids, cide, 1, 1, cjds, cjde, & cims, cime, 1, 1, cjms, cjme, & cips, cipe, 1, 1, cjps, cjpe, & ngrid%alboldxy, & nids, nide, 1, 1, njds, njde, & nims, nime, 1, 1, njms, njme, & nips, nipe, 1, 1, njps, njpe, & config_flags%shw, ngrid%imask_nostag, & .FALSE., .FALSE., & ngrid%i_parent_start, ngrid%j_parent_start, & ngrid%parent_grid_ratio, ngrid%parent_grid_ratio & ) ENDIF IF ( SIZE( grid%qsnowxy, 1 ) * SIZE( grid%qsnowxy, 2 ) .GT. 1 ) THEN CALL copy_fcnm ( & grid%qsnowxy, & cids, cide, 1, 1, cjds, cjde, & cims, cime, 1, 1, cjms, cjme, & cips, cipe, 1, 1, cjps, cjpe, & ngrid%qsnowxy, & nids, nide, 1, 1, njds, njde, & nims, nime, 1, 1, njms, njme, & nips, nipe, 1, 1, njps, njpe, & config_flags%shw, ngrid%imask_nostag, & .FALSE., .FALSE., & ngrid%i_parent_start, ngrid%j_parent_start, & ngrid%parent_grid_ratio, ngrid%parent_grid_ratio & ) ENDIF IF ( SIZE( grid%wslakexy, 1 ) * SIZE( grid%wslakexy, 2 ) .GT. 1 ) THEN CALL copy_fcnm ( & grid%wslakexy, & cids, cide, 1, 1, cjds, cjde, & cims, cime, 1, 1, cjms, cjme, & cips, cipe, 1, 1, cjps, cjpe, & ngrid%wslakexy, & nids, nide, 1, 1, njds, njde, & nims, nime, 1, 1, njms, njme, & nips, nipe, 1, 1, njps, njpe, & config_flags%shw, ngrid%imask_nostag, & .FALSE., .FALSE., & ngrid%i_parent_start, ngrid%j_parent_start, & ngrid%parent_grid_ratio, ngrid%parent_grid_ratio & ) ENDIF IF ( SIZE( grid%zwtxy, 1 ) * SIZE( grid%zwtxy, 2 ) .GT. 1 ) THEN CALL copy_fcnm ( & grid%zwtxy, & cids, cide, 1, 1, cjds, cjde, & cims, cime, 1, 1, cjms, cjme, & cips, cipe, 1, 1, cjps, cjpe, & ngrid%zwtxy, & nids, nide, 1, 1, njds, njde, & nims, nime, 1, 1, njms, njme, & nips, nipe, 1, 1, njps, njpe, & config_flags%shw, ngrid%imask_nostag, & .FALSE., .FALSE., & ngrid%i_parent_start, ngrid%j_parent_start, & ngrid%parent_grid_ratio, ngrid%parent_grid_ratio & ) ENDIF IF ( SIZE( grid%waxy, 1 ) * SIZE( grid%waxy, 2 ) .GT. 1 ) THEN CALL copy_fcnm ( & grid%waxy, & cids, cide, 1, 1, cjds, cjde, & cims, cime, 1, 1, cjms, cjme, & cips, cipe, 1, 1, cjps, cjpe, & ngrid%waxy, & nids, nide, 1, 1, njds, njde, & nims, nime, 1, 1, njms, njme, & nips, nipe, 1, 1, njps, njpe, & config_flags%shw, ngrid%imask_nostag, & .FALSE., .FALSE., & ngrid%i_parent_start, ngrid%j_parent_start, & ngrid%parent_grid_ratio, ngrid%parent_grid_ratio & ) ENDIF IF ( SIZE( grid%wtxy, 1 ) * SIZE( grid%wtxy, 2 ) .GT. 1 ) THEN CALL copy_fcnm ( & grid%wtxy, & cids, cide, 1, 1, cjds, cjde, & cims, cime, 1, 1, cjms, cjme, & cips, cipe, 1, 1, cjps, cjpe, & ngrid%wtxy, & nids, nide, 1, 1, njds, njde, & nims, nime, 1, 1, njms, njme, & nips, nipe, 1, 1, njps, njpe, & config_flags%shw, ngrid%imask_nostag, & .FALSE., .FALSE., & ngrid%i_parent_start, ngrid%j_parent_start, & ngrid%parent_grid_ratio, ngrid%parent_grid_ratio & ) ENDIF IF ( SIZE( grid%zsnsoxy, 1 ) * SIZE( grid%zsnsoxy, 3 ) .GT. 1 ) THEN CALL copy_fcnm ( & grid%zsnsoxy, & cids, cide, 1, config_flags%num_snso_layers, cjds, cjde, & cims, cime, 1, config_flags%num_snso_layers, cjms, cjme, & cips, cipe, 1, config_flags%num_snso_layers, cjps, cjpe, & ngrid%zsnsoxy, & nids, nide, 1, config_flags%num_snso_layers, njds, njde, & nims, nime, 1, config_flags%num_snso_layers, njms, njme, & nips, nipe, 1, config_flags%num_snso_layers, njps, njpe, & config_flags%shw, ngrid%imask_nostag, & .FALSE., .FALSE., & ngrid%i_parent_start, ngrid%j_parent_start, & ngrid%parent_grid_ratio, ngrid%parent_grid_ratio & ) ENDIF IF ( SIZE( grid%tsnoxy, 1 ) * SIZE( grid%tsnoxy, 3 ) .GT. 1 ) THEN CALL copy_fcnm ( & grid%tsnoxy, & cids, cide, 1, config_flags%num_snow_layers, cjds, cjde, & cims, cime, 1, config_flags%num_snow_layers, cjms, cjme, & cips, cipe, 1, config_flags%num_snow_layers, cjps, cjpe, & ngrid%tsnoxy, & nids, nide, 1, config_flags%num_snow_layers, njds, njde, & nims, nime, 1, config_flags%num_snow_layers, njms, njme, & nips, nipe, 1, config_flags%num_snow_layers, njps, njpe, & config_flags%shw, ngrid%imask_nostag, & .FALSE., .FALSE., & ngrid%i_parent_start, ngrid%j_parent_start, & ngrid%parent_grid_ratio, ngrid%parent_grid_ratio & ) ENDIF IF ( SIZE( grid%snicexy, 1 ) * SIZE( grid%snicexy, 3 ) .GT. 1 ) THEN CALL copy_fcnm ( & grid%snicexy, & cids, cide, 1, config_flags%num_snow_layers, cjds, cjde, & cims, cime, 1, config_flags%num_snow_layers, cjms, cjme, & cips, cipe, 1, config_flags%num_snow_layers, cjps, cjpe, & ngrid%snicexy, & nids, nide, 1, config_flags%num_snow_layers, njds, njde, & nims, nime, 1, config_flags%num_snow_layers, njms, njme, & nips, nipe, 1, config_flags%num_snow_layers, njps, njpe, & config_flags%shw, ngrid%imask_nostag, & .FALSE., .FALSE., & ngrid%i_parent_start, ngrid%j_parent_start, & ngrid%parent_grid_ratio, ngrid%parent_grid_ratio & ) ENDIF IF ( SIZE( grid%snliqxy, 1 ) * SIZE( grid%snliqxy, 3 ) .GT. 1 ) THEN CALL copy_fcnm ( & grid%snliqxy, & cids, cide, 1, config_flags%num_snow_layers, cjds, cjde, & cims, cime, 1, config_flags%num_snow_layers, cjms, cjme, & cips, cipe, 1, config_flags%num_snow_layers, cjps, cjpe, & ngrid%snliqxy, & nids, nide, 1, config_flags%num_snow_layers, njds, njde, & nims, nime, 1, config_flags%num_snow_layers, njms, njme, & nips, nipe, 1, config_flags%num_snow_layers, njps, njpe, & config_flags%shw, ngrid%imask_nostag, & .FALSE., .FALSE., & ngrid%i_parent_start, ngrid%j_parent_start, & ngrid%parent_grid_ratio, ngrid%parent_grid_ratio & ) ENDIF IF ( SIZE( grid%lfmassxy, 1 ) * SIZE( grid%lfmassxy, 2 ) .GT. 1 ) THEN CALL copy_fcnm ( & grid%lfmassxy, & cids, cide, 1, 1, cjds, cjde, & cims, cime, 1, 1, cjms, cjme, & cips, cipe, 1, 1, cjps, cjpe, & ngrid%lfmassxy, & nids, nide, 1, 1, njds, njde, & nims, nime, 1, 1, njms, njme, & nips, nipe, 1, 1, njps, njpe, & config_flags%shw, ngrid%imask_nostag, & .FALSE., .FALSE., & ngrid%i_parent_start, ngrid%j_parent_start, & ngrid%parent_grid_ratio, ngrid%parent_grid_ratio & ) ENDIF IF ( SIZE( grid%rtmassxy, 1 ) * SIZE( grid%rtmassxy, 2 ) .GT. 1 ) THEN CALL copy_fcnm ( & grid%rtmassxy, & cids, cide, 1, 1, cjds, cjde, & cims, cime, 1, 1, cjms, cjme, & cips, cipe, 1, 1, cjps, cjpe, & ngrid%rtmassxy, & nids, nide, 1, 1, njds, njde, & nims, nime, 1, 1, njms, njme, & nips, nipe, 1, 1, njps, njpe, & config_flags%shw, ngrid%imask_nostag, & .FALSE., .FALSE., & ngrid%i_parent_start, ngrid%j_parent_start, & ngrid%parent_grid_ratio, ngrid%parent_grid_ratio & ) ENDIF IF ( SIZE( grid%stmassxy, 1 ) * SIZE( grid%stmassxy, 2 ) .GT. 1 ) THEN CALL copy_fcnm ( & grid%stmassxy, & cids, cide, 1, 1, cjds, cjde, & cims, cime, 1, 1, cjms, cjme, & cips, cipe, 1, 1, cjps, cjpe, & ngrid%stmassxy, & nids, nide, 1, 1, njds, njde, & nims, nime, 1, 1, njms, njme, & nips, nipe, 1, 1, njps, njpe, & config_flags%shw, ngrid%imask_nostag, & .FALSE., .FALSE., & ngrid%i_parent_start, ngrid%j_parent_start, & ngrid%parent_grid_ratio, ngrid%parent_grid_ratio & ) ENDIF IF ( SIZE( grid%woodxy, 1 ) * SIZE( grid%woodxy, 2 ) .GT. 1 ) THEN CALL copy_fcnm ( & grid%woodxy, & cids, cide, 1, 1, cjds, cjde, & cims, cime, 1, 1, cjms, cjme, & cips, cipe, 1, 1, cjps, cjpe, & ngrid%woodxy, & nids, nide, 1, 1, njds, njde, & nims, nime, 1, 1, njms, njme, & nips, nipe, 1, 1, njps, njpe, & config_flags%shw, ngrid%imask_nostag, & .FALSE., .FALSE., & ngrid%i_parent_start, ngrid%j_parent_start, & ngrid%parent_grid_ratio, ngrid%parent_grid_ratio & ) ENDIF IF ( SIZE( grid%stblcpxy, 1 ) * SIZE( grid%stblcpxy, 2 ) .GT. 1 ) THEN CALL copy_fcnm ( & grid%stblcpxy, & cids, cide, 1, 1, cjds, cjde, & cims, cime, 1, 1, cjms, cjme, & cips, cipe, 1, 1, cjps, cjpe, & ngrid%stblcpxy, & nids, nide, 1, 1, njds, njde, & nims, nime, 1, 1, njms, njme, & nips, nipe, 1, 1, njps, njpe, & config_flags%shw, ngrid%imask_nostag, & .FALSE., .FALSE., & ngrid%i_parent_start, ngrid%j_parent_start, & ngrid%parent_grid_ratio, ngrid%parent_grid_ratio & ) ENDIF IF ( SIZE( grid%fastcpxy, 1 ) * SIZE( grid%fastcpxy, 2 ) .GT. 1 ) THEN CALL copy_fcnm ( & grid%fastcpxy, & cids, cide, 1, 1, cjds, cjde, & cims, cime, 1, 1, cjms, cjme, & cips, cipe, 1, 1, cjps, cjpe, & ngrid%fastcpxy, & nids, nide, 1, 1, njds, njde, & nims, nime, 1, 1, njms, njme, & nips, nipe, 1, 1, njps, njpe, & config_flags%shw, ngrid%imask_nostag, & .FALSE., .FALSE., & ngrid%i_parent_start, ngrid%j_parent_start, & ngrid%parent_grid_ratio, ngrid%parent_grid_ratio & ) ENDIF IF ( SIZE( grid%xsaixy, 1 ) * SIZE( grid%xsaixy, 2 ) .GT. 1 ) THEN CALL copy_fcnm ( & grid%xsaixy, & cids, cide, 1, 1, cjds, cjde, & cims, cime, 1, 1, cjms, cjme, & cips, cipe, 1, 1, cjps, cjpe, & ngrid%xsaixy, & nids, nide, 1, 1, njds, njde, & nims, nime, 1, 1, njms, njme, & nips, nipe, 1, 1, njps, njpe, & config_flags%shw, ngrid%imask_nostag, & .FALSE., .FALSE., & ngrid%i_parent_start, ngrid%j_parent_start, & ngrid%parent_grid_ratio, ngrid%parent_grid_ratio & ) ENDIF IF ( SIZE( grid%tradxy, 1 ) * SIZE( grid%tradxy, 2 ) .GT. 1 ) THEN CALL copy_fcnm ( & grid%tradxy, & cids, cide, 1, 1, cjds, cjde, & cims, cime, 1, 1, cjms, cjme, & cips, cipe, 1, 1, cjps, cjpe, & ngrid%tradxy, & nids, nide, 1, 1, njds, njde, & nims, nime, 1, 1, njms, njme, & nips, nipe, 1, 1, njps, njpe, & config_flags%shw, ngrid%imask_nostag, & .FALSE., .FALSE., & ngrid%i_parent_start, ngrid%j_parent_start, & ngrid%parent_grid_ratio, ngrid%parent_grid_ratio & ) ENDIF IF ( SIZE( grid%tsxy, 1 ) * SIZE( grid%tsxy, 2 ) .GT. 1 ) THEN CALL copy_fcnm ( & grid%tsxy, & cids, cide, 1, 1, cjds, cjde, & cims, cime, 1, 1, cjms, cjme, & cips, cipe, 1, 1, cjps, cjpe, & ngrid%tsxy, & nids, nide, 1, 1, njds, njde, & nims, nime, 1, 1, njms, njme, & nips, nipe, 1, 1, njps, njpe, & config_flags%shw, ngrid%imask_nostag, & .FALSE., .FALSE., & ngrid%i_parent_start, ngrid%j_parent_start, & ngrid%parent_grid_ratio, ngrid%parent_grid_ratio & ) ENDIF IF ( SIZE( grid%neexy, 1 ) * SIZE( grid%neexy, 2 ) .GT. 1 ) THEN CALL copy_fcnm ( & grid%neexy, & cids, cide, 1, 1, cjds, cjde, & cims, cime, 1, 1, cjms, cjme, & cips, cipe, 1, 1, cjps, cjpe, & ngrid%neexy, & nids, nide, 1, 1, njds, njde, & nims, nime, 1, 1, njms, njme, & nips, nipe, 1, 1, njps, njpe, & config_flags%shw, ngrid%imask_nostag, & .FALSE., .FALSE., & ngrid%i_parent_start, ngrid%j_parent_start, & ngrid%parent_grid_ratio, ngrid%parent_grid_ratio & ) ENDIF IF ( SIZE( grid%gppxy, 1 ) * SIZE( grid%gppxy, 2 ) .GT. 1 ) THEN CALL copy_fcnm ( & grid%gppxy, & cids, cide, 1, 1, cjds, cjde, & cims, cime, 1, 1, cjms, cjme, & cips, cipe, 1, 1, cjps, cjpe, & ngrid%gppxy, & nids, nide, 1, 1, njds, njde, & nims, nime, 1, 1, njms, njme, & nips, nipe, 1, 1, njps, njpe, & config_flags%shw, ngrid%imask_nostag, & .FALSE., .FALSE., & ngrid%i_parent_start, ngrid%j_parent_start, & ngrid%parent_grid_ratio, ngrid%parent_grid_ratio & ) ENDIF IF ( SIZE( grid%nppxy, 1 ) * SIZE( grid%nppxy, 2 ) .GT. 1 ) THEN CALL copy_fcnm ( & grid%nppxy, & cids, cide, 1, 1, cjds, cjde, & cims, cime, 1, 1, cjms, cjme, & cips, cipe, 1, 1, cjps, cjpe, & ngrid%nppxy, & nids, nide, 1, 1, njds, njde, & nims, nime, 1, 1, njms, njme, & nips, nipe, 1, 1, njps, njpe, & config_flags%shw, ngrid%imask_nostag, & .FALSE., .FALSE., & ngrid%i_parent_start, ngrid%j_parent_start, & ngrid%parent_grid_ratio, ngrid%parent_grid_ratio & ) ENDIF IF ( SIZE( grid%fvegxy, 1 ) * SIZE( grid%fvegxy, 2 ) .GT. 1 ) THEN CALL copy_fcnm ( & grid%fvegxy, & cids, cide, 1, 1, cjds, cjde, & cims, cime, 1, 1, cjms, cjme, & cips, cipe, 1, 1, cjps, cjpe, & ngrid%fvegxy, & nids, nide, 1, 1, njds, njde, & nims, nime, 1, 1, njms, njme, & nips, nipe, 1, 1, njps, njpe, & config_flags%shw, ngrid%imask_nostag, & .FALSE., .FALSE., & ngrid%i_parent_start, ngrid%j_parent_start, & ngrid%parent_grid_ratio, ngrid%parent_grid_ratio & ) ENDIF IF ( SIZE( grid%qinxy, 1 ) * SIZE( grid%qinxy, 2 ) .GT. 1 ) THEN CALL copy_fcnm ( & grid%qinxy, & cids, cide, 1, 1, cjds, cjde, & cims, cime, 1, 1, cjms, cjme, & cips, cipe, 1, 1, cjps, cjpe, & ngrid%qinxy, & nids, nide, 1, 1, njds, njde, & nims, nime, 1, 1, njms, njme, & nips, nipe, 1, 1, njps, njpe, & config_flags%shw, ngrid%imask_nostag, & .FALSE., .FALSE., & ngrid%i_parent_start, ngrid%j_parent_start, & ngrid%parent_grid_ratio, ngrid%parent_grid_ratio & ) ENDIF IF ( SIZE( grid%runsfxy, 1 ) * SIZE( grid%runsfxy, 2 ) .GT. 1 ) THEN CALL copy_fcnm ( & grid%runsfxy, & cids, cide, 1, 1, cjds, cjde, & cims, cime, 1, 1, cjms, cjme, & cips, cipe, 1, 1, cjps, cjpe, & ngrid%runsfxy, & nids, nide, 1, 1, njds, njde, & nims, nime, 1, 1, njms, njme, & nips, nipe, 1, 1, njps, njpe, & config_flags%shw, ngrid%imask_nostag, & .FALSE., .FALSE., & ngrid%i_parent_start, ngrid%j_parent_start, & ngrid%parent_grid_ratio, ngrid%parent_grid_ratio & ) ENDIF IF ( SIZE( grid%runsbxy, 1 ) * SIZE( grid%runsbxy, 2 ) .GT. 1 ) THEN CALL copy_fcnm ( & grid%runsbxy, & cids, cide, 1, 1, cjds, cjde, & cims, cime, 1, 1, cjms, cjme, & cips, cipe, 1, 1, cjps, cjpe, & ngrid%runsbxy, & nids, nide, 1, 1, njds, njde, & nims, nime, 1, 1, njms, njme, & nips, nipe, 1, 1, njps, njpe, & config_flags%shw, ngrid%imask_nostag, & .FALSE., .FALSE., & ngrid%i_parent_start, ngrid%j_parent_start, & ngrid%parent_grid_ratio, ngrid%parent_grid_ratio & ) ENDIF IF ( SIZE( grid%ecanxy, 1 ) * SIZE( grid%ecanxy, 2 ) .GT. 1 ) THEN CALL copy_fcnm ( & grid%ecanxy, & cids, cide, 1, 1, cjds, cjde, & cims, cime, 1, 1, cjms, cjme, & cips, cipe, 1, 1, cjps, cjpe, & ngrid%ecanxy, & nids, nide, 1, 1, njds, njde, & nims, nime, 1, 1, njms, njme, & nips, nipe, 1, 1, njps, njpe, & config_flags%shw, ngrid%imask_nostag, & .FALSE., .FALSE., & ngrid%i_parent_start, ngrid%j_parent_start, & ngrid%parent_grid_ratio, ngrid%parent_grid_ratio & ) ENDIF IF ( SIZE( grid%edirxy, 1 ) * SIZE( grid%edirxy, 2 ) .GT. 1 ) THEN CALL copy_fcnm ( & grid%edirxy, & cids, cide, 1, 1, cjds, cjde, & cims, cime, 1, 1, cjms, cjme, & cips, cipe, 1, 1, cjps, cjpe, & ngrid%edirxy, & nids, nide, 1, 1, njds, njde, & nims, nime, 1, 1, njms, njme, & nips, nipe, 1, 1, njps, njpe, & config_flags%shw, ngrid%imask_nostag, & .FALSE., .FALSE., & ngrid%i_parent_start, ngrid%j_parent_start, & ngrid%parent_grid_ratio, ngrid%parent_grid_ratio & ) ENDIF IF ( SIZE( grid%etranxy, 1 ) * SIZE( grid%etranxy, 2 ) .GT. 1 ) THEN CALL copy_fcnm ( & grid%etranxy, & cids, cide, 1, 1, cjds, cjde, & cims, cime, 1, 1, cjms, cjme, & cips, cipe, 1, 1, cjps, cjpe, & ngrid%etranxy, & nids, nide, 1, 1, njds, njde, & nims, nime, 1, 1, njms, njme, & nips, nipe, 1, 1, njps, njpe, & config_flags%shw, ngrid%imask_nostag, & .FALSE., .FALSE., & ngrid%i_parent_start, ngrid%j_parent_start, & ngrid%parent_grid_ratio, ngrid%parent_grid_ratio & ) ENDIF IF ( SIZE( grid%fsaxy, 1 ) * SIZE( grid%fsaxy, 2 ) .GT. 1 ) THEN CALL copy_fcnm ( & grid%fsaxy, & cids, cide, 1, 1, cjds, cjde, & cims, cime, 1, 1, cjms, cjme, & cips, cipe, 1, 1, cjps, cjpe, & ngrid%fsaxy, & nids, nide, 1, 1, njds, njde, & nims, nime, 1, 1, njms, njme, & nips, nipe, 1, 1, njps, njpe, & config_flags%shw, ngrid%imask_nostag, & .FALSE., .FALSE., & ngrid%i_parent_start, ngrid%j_parent_start, & ngrid%parent_grid_ratio, ngrid%parent_grid_ratio & ) ENDIF IF ( SIZE( grid%firaxy, 1 ) * SIZE( grid%firaxy, 2 ) .GT. 1 ) THEN CALL copy_fcnm ( & grid%firaxy, & cids, cide, 1, 1, cjds, cjde, & cims, cime, 1, 1, cjms, cjme, & cips, cipe, 1, 1, cjps, cjpe, & ngrid%firaxy, & nids, nide, 1, 1, njds, njde, & nims, nime, 1, 1, njms, njme, & nips, nipe, 1, 1, njps, njpe, & config_flags%shw, ngrid%imask_nostag, & .FALSE., .FALSE., & ngrid%i_parent_start, ngrid%j_parent_start, & ngrid%parent_grid_ratio, ngrid%parent_grid_ratio & ) ENDIF IF ( SIZE( grid%aparxy, 1 ) * SIZE( grid%aparxy, 2 ) .GT. 1 ) THEN CALL copy_fcnm ( & grid%aparxy, & cids, cide, 1, 1, cjds, cjde, & cims, cime, 1, 1, cjms, cjme, & cips, cipe, 1, 1, cjps, cjpe, & ngrid%aparxy, & nids, nide, 1, 1, njds, njde, & nims, nime, 1, 1, njms, njme, & nips, nipe, 1, 1, njps, njpe, & config_flags%shw, ngrid%imask_nostag, & .FALSE., .FALSE., & ngrid%i_parent_start, ngrid%j_parent_start, & ngrid%parent_grid_ratio, ngrid%parent_grid_ratio & ) ENDIF IF ( SIZE( grid%psnxy, 1 ) * SIZE( grid%psnxy, 2 ) .GT. 1 ) THEN CALL copy_fcnm ( & grid%psnxy, & cids, cide, 1, 1, cjds, cjde, & cims, cime, 1, 1, cjms, cjme, & cips, cipe, 1, 1, cjps, cjpe, & ngrid%psnxy, & nids, nide, 1, 1, njds, njde, & nims, nime, 1, 1, njms, njme, & nips, nipe, 1, 1, njps, njpe, & config_flags%shw, ngrid%imask_nostag, & .FALSE., .FALSE., & ngrid%i_parent_start, ngrid%j_parent_start, & ngrid%parent_grid_ratio, ngrid%parent_grid_ratio & ) ENDIF IF ( SIZE( grid%savxy, 1 ) * SIZE( grid%savxy, 2 ) .GT. 1 ) THEN CALL copy_fcnm ( & grid%savxy, & cids, cide, 1, 1, cjds, cjde, & cims, cime, 1, 1, cjms, cjme, & cips, cipe, 1, 1, cjps, cjpe, & ngrid%savxy, & nids, nide, 1, 1, njds, njde, & nims, nime, 1, 1, njms, njme, & nips, nipe, 1, 1, njps, njpe, & config_flags%shw, ngrid%imask_nostag, & .FALSE., .FALSE., & ngrid%i_parent_start, ngrid%j_parent_start, & ngrid%parent_grid_ratio, ngrid%parent_grid_ratio & ) ENDIF IF ( SIZE( grid%sagxy, 1 ) * SIZE( grid%sagxy, 2 ) .GT. 1 ) THEN CALL copy_fcnm ( & grid%sagxy, & cids, cide, 1, 1, cjds, cjde, & cims, cime, 1, 1, cjms, cjme, & cips, cipe, 1, 1, cjps, cjpe, & ngrid%sagxy, & nids, nide, 1, 1, njds, njde, & nims, nime, 1, 1, njms, njme, & nips, nipe, 1, 1, njps, njpe, & config_flags%shw, ngrid%imask_nostag, & .FALSE., .FALSE., & ngrid%i_parent_start, ngrid%j_parent_start, & ngrid%parent_grid_ratio, ngrid%parent_grid_ratio & ) ENDIF IF ( SIZE( grid%fsnoxy, 1 ) * SIZE( grid%fsnoxy, 2 ) .GT. 1 ) THEN CALL copy_fcnm ( & grid%fsnoxy, & cids, cide, 1, 1, cjds, cjde, & cims, cime, 1, 1, cjms, cjme, & cips, cipe, 1, 1, cjps, cjpe, & ngrid%fsnoxy, & nids, nide, 1, 1, njds, njde, & nims, nime, 1, 1, njms, njme, & nips, nipe, 1, 1, njps, njpe, & config_flags%shw, ngrid%imask_nostag, & .FALSE., .FALSE., & ngrid%i_parent_start, ngrid%j_parent_start, & ngrid%parent_grid_ratio, ngrid%parent_grid_ratio & ) ENDIF IF ( SIZE( grid%t2mvxy, 1 ) * SIZE( grid%t2mvxy, 2 ) .GT. 1 ) THEN CALL copy_fcnm ( & grid%t2mvxy, & cids, cide, 1, 1, cjds, cjde, & cims, cime, 1, 1, cjms, cjme, & cips, cipe, 1, 1, cjps, cjpe, & ngrid%t2mvxy, & nids, nide, 1, 1, njds, njde, & nims, nime, 1, 1, njms, njme, & nips, nipe, 1, 1, njps, njpe, & config_flags%shw, ngrid%imask_nostag, & .FALSE., .FALSE., & ngrid%i_parent_start, ngrid%j_parent_start, & ngrid%parent_grid_ratio, ngrid%parent_grid_ratio & ) ENDIF IF ( SIZE( grid%t2mbxy, 1 ) * SIZE( grid%t2mbxy, 2 ) .GT. 1 ) THEN CALL copy_fcnm ( & grid%t2mbxy, & cids, cide, 1, 1, cjds, cjde, & cims, cime, 1, 1, cjms, cjme, & cips, cipe, 1, 1, cjps, cjpe, & ngrid%t2mbxy, & nids, nide, 1, 1, njds, njde, & nims, nime, 1, 1, njms, njme, & nips, nipe, 1, 1, njps, njpe, & config_flags%shw, ngrid%imask_nostag, & .FALSE., .FALSE., & ngrid%i_parent_start, ngrid%j_parent_start, & ngrid%parent_grid_ratio, ngrid%parent_grid_ratio & ) ENDIF IF ( SIZE( grid%q2mvxy, 1 ) * SIZE( grid%q2mvxy, 2 ) .GT. 1 ) THEN CALL copy_fcnm ( & grid%q2mvxy, & cids, cide, 1, 1, cjds, cjde, & cims, cime, 1, 1, cjms, cjme, & cips, cipe, 1, 1, cjps, cjpe, & ngrid%q2mvxy, & nids, nide, 1, 1, njds, njde, & nims, nime, 1, 1, njms, njme, & nips, nipe, 1, 1, njps, njpe, & config_flags%shw, ngrid%imask_nostag, & .FALSE., .FALSE., & ngrid%i_parent_start, ngrid%j_parent_start, & ngrid%parent_grid_ratio, ngrid%parent_grid_ratio & ) ENDIF IF ( SIZE( grid%q2mbxy, 1 ) * SIZE( grid%q2mbxy, 2 ) .GT. 1 ) THEN CALL copy_fcnm ( & grid%q2mbxy, & cids, cide, 1, 1, cjds, cjde, & cims, cime, 1, 1, cjms, cjme, & cips, cipe, 1, 1, cjps, cjpe, & ngrid%q2mbxy, & nids, nide, 1, 1, njds, njde, & nims, nime, 1, 1, njms, njme, & nips, nipe, 1, 1, njps, njpe, & config_flags%shw, ngrid%imask_nostag, & .FALSE., .FALSE., & ngrid%i_parent_start, ngrid%j_parent_start, & ngrid%parent_grid_ratio, ngrid%parent_grid_ratio & ) ENDIF IF ( SIZE( grid%chstarxy, 1 ) * SIZE( grid%chstarxy, 2 ) .GT. 1 ) THEN CALL copy_fcnm ( & grid%chstarxy, & cids, cide, 1, 1, cjds, cjde, & cims, cime, 1, 1, cjms, cjme, & cips, cipe, 1, 1, cjps, cjpe, & ngrid%chstarxy, & nids, nide, 1, 1, njds, njde, & nims, nime, 1, 1, njms, njme, & nips, nipe, 1, 1, njps, njpe, & config_flags%shw, ngrid%imask_nostag, & .FALSE., .FALSE., & ngrid%i_parent_start, ngrid%j_parent_start, & ngrid%parent_grid_ratio, ngrid%parent_grid_ratio & ) ENDIF IF ( SIZE( grid%rssunxy, 1 ) * SIZE( grid%rssunxy, 2 ) .GT. 1 ) THEN CALL copy_fcnm ( & grid%rssunxy, & cids, cide, 1, 1, cjds, cjde, & cims, cime, 1, 1, cjms, cjme, & cips, cipe, 1, 1, cjps, cjpe, & ngrid%rssunxy, & nids, nide, 1, 1, njds, njde, & nims, nime, 1, 1, njms, njme, & nips, nipe, 1, 1, njps, njpe, & config_flags%shw, ngrid%imask_nostag, & .FALSE., .FALSE., & ngrid%i_parent_start, ngrid%j_parent_start, & ngrid%parent_grid_ratio, ngrid%parent_grid_ratio & ) ENDIF IF ( SIZE( grid%rsshaxy, 1 ) * SIZE( grid%rsshaxy, 2 ) .GT. 1 ) THEN CALL copy_fcnm ( & grid%rsshaxy, & cids, cide, 1, 1, cjds, cjde, & cims, cime, 1, 1, cjms, cjme, & cips, cipe, 1, 1, cjps, cjpe, & ngrid%rsshaxy, & nids, nide, 1, 1, njds, njde, & nims, nime, 1, 1, njms, njme, & nips, nipe, 1, 1, njps, njpe, & config_flags%shw, ngrid%imask_nostag, & .FALSE., .FALSE., & ngrid%i_parent_start, ngrid%j_parent_start, & ngrid%parent_grid_ratio, ngrid%parent_grid_ratio & ) ENDIF IF ( SIZE( grid%bgapxy, 1 ) * SIZE( grid%bgapxy, 2 ) .GT. 1 ) THEN CALL copy_fcnm ( & grid%bgapxy, & cids, cide, 1, 1, cjds, cjde, & cims, cime, 1, 1, cjms, cjme, & cips, cipe, 1, 1, cjps, cjpe, & ngrid%bgapxy, & nids, nide, 1, 1, njds, njde, & nims, nime, 1, 1, njms, njme, & nips, nipe, 1, 1, njps, njpe, & config_flags%shw, ngrid%imask_nostag, & .FALSE., .FALSE., & ngrid%i_parent_start, ngrid%j_parent_start, & ngrid%parent_grid_ratio, ngrid%parent_grid_ratio & ) ENDIF IF ( SIZE( grid%wgapxy, 1 ) * SIZE( grid%wgapxy, 2 ) .GT. 1 ) THEN CALL copy_fcnm ( & grid%wgapxy, & cids, cide, 1, 1, cjds, cjde, & cims, cime, 1, 1, cjms, cjme, & cips, cipe, 1, 1, cjps, cjpe, & ngrid%wgapxy, & nids, nide, 1, 1, njds, njde, & nims, nime, 1, 1, njms, njme, & nips, nipe, 1, 1, njps, njpe, & config_flags%shw, ngrid%imask_nostag, & .FALSE., .FALSE., & ngrid%i_parent_start, ngrid%j_parent_start, & ngrid%parent_grid_ratio, ngrid%parent_grid_ratio & ) ENDIF IF ( SIZE( grid%gapxy, 1 ) * SIZE( grid%gapxy, 2 ) .GT. 1 ) THEN CALL copy_fcnm ( & grid%gapxy, & cids, cide, 1, 1, cjds, cjde, & cims, cime, 1, 1, cjms, cjme, & cips, cipe, 1, 1, cjps, cjpe, & ngrid%gapxy, & nids, nide, 1, 1, njds, njde, & nims, nime, 1, 1, njms, njme, & nips, nipe, 1, 1, njps, njpe, & config_flags%shw, ngrid%imask_nostag, & .FALSE., .FALSE., & ngrid%i_parent_start, ngrid%j_parent_start, & ngrid%parent_grid_ratio, ngrid%parent_grid_ratio & ) ENDIF IF ( SIZE( grid%tgvxy, 1 ) * SIZE( grid%tgvxy, 2 ) .GT. 1 ) THEN CALL copy_fcnm ( & grid%tgvxy, & cids, cide, 1, 1, cjds, cjde, & cims, cime, 1, 1, cjms, cjme, & cips, cipe, 1, 1, cjps, cjpe, & ngrid%tgvxy, & nids, nide, 1, 1, njds, njde, & nims, nime, 1, 1, njms, njme, & nips, nipe, 1, 1, njps, njpe, & config_flags%shw, ngrid%imask_nostag, & .FALSE., .FALSE., & ngrid%i_parent_start, ngrid%j_parent_start, & ngrid%parent_grid_ratio, ngrid%parent_grid_ratio & ) ENDIF IF ( SIZE( grid%tgbxy, 1 ) * SIZE( grid%tgbxy, 2 ) .GT. 1 ) THEN CALL copy_fcnm ( & grid%tgbxy, & cids, cide, 1, 1, cjds, cjde, & cims, cime, 1, 1, cjms, cjme, & cips, cipe, 1, 1, cjps, cjpe, & ngrid%tgbxy, & nids, nide, 1, 1, njds, njde, & nims, nime, 1, 1, njms, njme, & nips, nipe, 1, 1, njps, njpe, & config_flags%shw, ngrid%imask_nostag, & .FALSE., .FALSE., & ngrid%i_parent_start, ngrid%j_parent_start, & ngrid%parent_grid_ratio, ngrid%parent_grid_ratio & ) ENDIF IF ( SIZE( grid%chvxy, 1 ) * SIZE( grid%chvxy, 2 ) .GT. 1 ) THEN CALL copy_fcnm ( & grid%chvxy, & cids, cide, 1, 1, cjds, cjde, & cims, cime, 1, 1, cjms, cjme, & cips, cipe, 1, 1, cjps, cjpe, & ngrid%chvxy, & nids, nide, 1, 1, njds, njde, & nims, nime, 1, 1, njms, njme, & nips, nipe, 1, 1, njps, njpe, & config_flags%shw, ngrid%imask_nostag, & .FALSE., .FALSE., & ngrid%i_parent_start, ngrid%j_parent_start, & ngrid%parent_grid_ratio, ngrid%parent_grid_ratio & ) ENDIF IF ( SIZE( grid%chbxy, 1 ) * SIZE( grid%chbxy, 2 ) .GT. 1 ) THEN CALL copy_fcnm ( & grid%chbxy, & cids, cide, 1, 1, cjds, cjde, & cims, cime, 1, 1, cjms, cjme, & cips, cipe, 1, 1, cjps, cjpe, & ngrid%chbxy, & nids, nide, 1, 1, njds, njde, & nims, nime, 1, 1, njms, njme, & nips, nipe, 1, 1, njps, njpe, & config_flags%shw, ngrid%imask_nostag, & .FALSE., .FALSE., & ngrid%i_parent_start, ngrid%j_parent_start, & ngrid%parent_grid_ratio, ngrid%parent_grid_ratio & ) ENDIF IF ( SIZE( grid%tmn, 1 ) * SIZE( grid%tmn, 2 ) .GT. 1 ) THEN CALL copy_fcnm ( & grid%tmn, & cids, cide, 1, 1, cjds, cjde, & cims, cime, 1, 1, cjms, cjme, & cips, cipe, 1, 1, cjps, cjpe, & ngrid%tmn, & nids, nide, 1, 1, njds, njde, & nims, nime, 1, 1, njms, njme, & nips, nipe, 1, 1, njps, njpe, & config_flags%shw, ngrid%imask_nostag, & .FALSE., .FALSE., & ngrid%i_parent_start, ngrid%j_parent_start, & ngrid%parent_grid_ratio, ngrid%parent_grid_ratio & ) ENDIF IF ( SIZE( grid%tyr, 1 ) * SIZE( grid%tyr, 2 ) .GT. 1 ) THEN CALL copy_fcnm ( & grid%tyr, & cids, cide, 1, 1, cjds, cjde, & cims, cime, 1, 1, cjms, cjme, & cips, cipe, 1, 1, cjps, cjpe, & ngrid%tyr, & nids, nide, 1, 1, njds, njde, & nims, nime, 1, 1, njms, njme, & nips, nipe, 1, 1, njps, njpe, & config_flags%shw, ngrid%imask_nostag, & .FALSE., .FALSE., & ngrid%i_parent_start, ngrid%j_parent_start, & ngrid%parent_grid_ratio, ngrid%parent_grid_ratio & ) ENDIF IF ( SIZE( grid%tyra, 1 ) * SIZE( grid%tyra, 2 ) .GT. 1 ) THEN CALL copy_fcnm ( & grid%tyra, & cids, cide, 1, 1, cjds, cjde, & cims, cime, 1, 1, cjms, cjme, & cips, cipe, 1, 1, cjps, cjpe, & ngrid%tyra, & nids, nide, 1, 1, njds, njde, & nims, nime, 1, 1, njms, njme, & nips, nipe, 1, 1, njps, njpe, & config_flags%shw, ngrid%imask_nostag, & .FALSE., .FALSE., & ngrid%i_parent_start, ngrid%j_parent_start, & ngrid%parent_grid_ratio, ngrid%parent_grid_ratio & ) ENDIF IF ( SIZE( grid%tdly, 1 ) * SIZE( grid%tdly, 2 ) .GT. 1 ) THEN CALL copy_fcnm ( & grid%tdly, & cids, cide, 1, 1, cjds, cjde, & cims, cime, 1, 1, cjms, cjme, & cips, cipe, 1, 1, cjps, cjpe, & ngrid%tdly, & nids, nide, 1, 1, njds, njde, & nims, nime, 1, 1, njms, njme, & nips, nipe, 1, 1, njps, njpe, & config_flags%shw, ngrid%imask_nostag, & .FALSE., .FALSE., & ngrid%i_parent_start, ngrid%j_parent_start, & ngrid%parent_grid_ratio, ngrid%parent_grid_ratio & ) ENDIF IF ( SIZE( grid%tlag, 1 ) * SIZE( grid%tlag, 3 ) .GT. 1 ) THEN CALL copy_fcnm ( & grid%tlag, & cids, cide, 1, config_flags%lagday, cjds, cjde, & cims, cime, 1, config_flags%lagday, cjms, cjme, & cips, cipe, 1, config_flags%lagday, cjps, cjpe, & ngrid%tlag, & nids, nide, 1, config_flags%lagday, njds, njde, & nims, nime, 1, config_flags%lagday, njms, njme, & nips, nipe, 1, config_flags%lagday, njps, njpe, & config_flags%shw, ngrid%imask_nostag, & .FALSE., .FALSE., & ngrid%i_parent_start, ngrid%j_parent_start, & ngrid%parent_grid_ratio, ngrid%parent_grid_ratio & ) ENDIF IF ( SIZE( grid%xland, 1 ) * SIZE( grid%xland, 2 ) .GT. 1 ) THEN CALL copy_fcnm ( & grid%xland, & cids, cide, 1, 1, cjds, cjde, & cims, cime, 1, 1, cjms, cjme, & cips, cipe, 1, 1, cjps, cjpe, & ngrid%xland, & nids, nide, 1, 1, njds, njde, & nims, nime, 1, 1, njms, njme, & nips, nipe, 1, 1, njps, njpe, & config_flags%shw, ngrid%imask_nostag, & .FALSE., .FALSE., & ngrid%i_parent_start, ngrid%j_parent_start, & ngrid%parent_grid_ratio, ngrid%parent_grid_ratio & ) ENDIF IF ( SIZE( grid%achfx, 1 ) * SIZE( grid%achfx, 2 ) .GT. 1 ) THEN CALL copy_fcn ( & grid%achfx, & cids, cide, 1, 1, cjds, cjde, & cims, cime, 1, 1, cjms, cjme, & cips, cipe, 1, 1, cjps, cjpe, & ngrid%achfx, & nids, nide, 1, 1, njds, njde, & nims, nime, 1, 1, njms, njme, & nips, nipe, 1, 1, njps, njpe, & config_flags%shw, ngrid%imask_nostag, & .FALSE., .FALSE., & ngrid%i_parent_start, ngrid%j_parent_start, & ngrid%parent_grid_ratio, ngrid%parent_grid_ratio & ) ENDIF IF ( SIZE( grid%aclhf, 1 ) * SIZE( grid%aclhf, 2 ) .GT. 1 ) THEN CALL copy_fcn ( & grid%aclhf, & cids, cide, 1, 1, cjds, cjde, & cims, cime, 1, 1, cjms, cjme, & cips, cipe, 1, 1, cjps, cjpe, & ngrid%aclhf, & nids, nide, 1, 1, njds, njde, & nims, nime, 1, 1, njms, njme, & nips, nipe, 1, 1, njps, njpe, & config_flags%shw, ngrid%imask_nostag, & .FALSE., .FALSE., & ngrid%i_parent_start, ngrid%j_parent_start, & ngrid%parent_grid_ratio, ngrid%parent_grid_ratio & ) ENDIF IF ( SIZE( grid%snowc, 1 ) * SIZE( grid%snowc, 2 ) .GT. 1 ) THEN CALL copy_fcnm ( & grid%snowc, & cids, cide, 1, 1, cjds, cjde, & cims, cime, 1, 1, cjms, cjme, & cips, cipe, 1, 1, cjps, cjpe, & ngrid%snowc, & nids, nide, 1, 1, njds, njde, & nims, nime, 1, 1, njms, njme, & nips, nipe, 1, 1, njps, njpe, & config_flags%shw, ngrid%imask_nostag, & .FALSE., .FALSE., & ngrid%i_parent_start, ngrid%j_parent_start, & ngrid%parent_grid_ratio, ngrid%parent_grid_ratio & ) ENDIF IF ( SIZE( grid%tml, 1 ) * SIZE( grid%tml, 2 ) .GT. 1 ) THEN CALL copy_fcnm ( & grid%tml, & cids, cide, 1, 1, cjds, cjde, & cims, cime, 1, 1, cjms, cjme, & cips, cipe, 1, 1, cjps, cjpe, & ngrid%tml, & nids, nide, 1, 1, njds, njde, & nims, nime, 1, 1, njms, njme, & nips, nipe, 1, 1, njps, njpe, & config_flags%shw, ngrid%imask_nostag, & .FALSE., .FALSE., & ngrid%i_parent_start, ngrid%j_parent_start, & ngrid%parent_grid_ratio, ngrid%parent_grid_ratio & ) ENDIF IF ( SIZE( grid%t0ml, 1 ) * SIZE( grid%t0ml, 2 ) .GT. 1 ) THEN CALL copy_fcnm ( & grid%t0ml, & cids, cide, 1, 1, cjds, cjde, & cims, cime, 1, 1, cjms, cjme, & cips, cipe, 1, 1, cjps, cjpe, & ngrid%t0ml, & nids, nide, 1, 1, njds, njde, & nims, nime, 1, 1, njms, njme, & nips, nipe, 1, 1, njps, njpe, & config_flags%shw, ngrid%imask_nostag, & .FALSE., .FALSE., & ngrid%i_parent_start, ngrid%j_parent_start, & ngrid%parent_grid_ratio, ngrid%parent_grid_ratio & ) ENDIF IF ( SIZE( grid%hml, 1 ) * SIZE( grid%hml, 2 ) .GT. 1 ) THEN CALL copy_fcnm ( & grid%hml, & cids, cide, 1, 1, cjds, cjde, & cims, cime, 1, 1, cjms, cjme, & cips, cipe, 1, 1, cjps, cjpe, & ngrid%hml, & nids, nide, 1, 1, njds, njde, & nims, nime, 1, 1, njms, njme, & nips, nipe, 1, 1, njps, njpe, & config_flags%shw, ngrid%imask_nostag, & .FALSE., .FALSE., & ngrid%i_parent_start, ngrid%j_parent_start, & ngrid%parent_grid_ratio, ngrid%parent_grid_ratio & ) ENDIF IF ( SIZE( grid%h0ml, 1 ) * SIZE( grid%h0ml, 2 ) .GT. 1 ) THEN CALL copy_fcnm ( & grid%h0ml, & cids, cide, 1, 1, cjds, cjde, & cims, cime, 1, 1, cjms, cjme, & cips, cipe, 1, 1, cjps, cjpe, & ngrid%h0ml, & nids, nide, 1, 1, njds, njde, & nims, nime, 1, 1, njms, njme, & nips, nipe, 1, 1, njps, njpe, & config_flags%shw, ngrid%imask_nostag, & .FALSE., .FALSE., & ngrid%i_parent_start, ngrid%j_parent_start, & ngrid%parent_grid_ratio, ngrid%parent_grid_ratio & ) ENDIF IF ( SIZE( grid%huml, 1 ) * SIZE( grid%huml, 2 ) .GT. 1 ) THEN CALL copy_fcnm ( & grid%huml, & cids, cide, 1, 1, cjds, cjde, & cims, cime, 1, 1, cjms, cjme, & cips, cipe, 1, 1, cjps, cjpe, & ngrid%huml, & nids, nide, 1, 1, njds, njde, & nims, nime, 1, 1, njms, njme, & nips, nipe, 1, 1, njps, njpe, & config_flags%shw, ngrid%imask_nostag, & .FALSE., .FALSE., & ngrid%i_parent_start, ngrid%j_parent_start, & ngrid%parent_grid_ratio, ngrid%parent_grid_ratio & ) ENDIF IF ( SIZE( grid%hvml, 1 ) * SIZE( grid%hvml, 2 ) .GT. 1 ) THEN CALL copy_fcnm ( & grid%hvml, & cids, cide, 1, 1, cjds, cjde, & cims, cime, 1, 1, cjms, cjme, & cips, cipe, 1, 1, cjps, cjpe, & ngrid%hvml, & nids, nide, 1, 1, njds, njde, & nims, nime, 1, 1, njms, njme, & nips, nipe, 1, 1, njps, njpe, & config_flags%shw, ngrid%imask_nostag, & .FALSE., .FALSE., & ngrid%i_parent_start, ngrid%j_parent_start, & ngrid%parent_grid_ratio, ngrid%parent_grid_ratio & ) ENDIF IF ( SIZE( grid%tmoml, 1 ) * SIZE( grid%tmoml, 2 ) .GT. 1 ) THEN CALL copy_fcnm ( & grid%tmoml, & cids, cide, 1, 1, cjds, cjde, & cims, cime, 1, 1, cjms, cjme, & cips, cipe, 1, 1, cjps, cjpe, & ngrid%tmoml, & nids, nide, 1, 1, njds, njde, & nims, nime, 1, 1, njms, njme, & nips, nipe, 1, 1, njps, njpe, & config_flags%shw, ngrid%imask_nostag, & .FALSE., .FALSE., & ngrid%i_parent_start, ngrid%j_parent_start, & ngrid%parent_grid_ratio, ngrid%parent_grid_ratio & ) ENDIF IF ( SIZE( grid%landmask, 1 ) * SIZE( grid%landmask, 2 ) .GT. 1 ) THEN CALL copy_fcnm ( & grid%landmask, & cids, cide, 1, 1, cjds, cjde, & cims, cime, 1, 1, cjms, cjme, & cips, cipe, 1, 1, cjps, cjpe, & ngrid%landmask, & nids, nide, 1, 1, njds, njde, & nims, nime, 1, 1, njms, njme, & nips, nipe, 1, 1, njps, njpe, & config_flags%shw, ngrid%imask_nostag, & .FALSE., .FALSE., & ngrid%i_parent_start, ngrid%j_parent_start, & ngrid%parent_grid_ratio, ngrid%parent_grid_ratio & ) ENDIF DO itrace = PARAM_FIRST_SCALAR, num_tracer IF ( SIZE( tracer, 1 ) * SIZE( tracer, 3 ) .GT. 1 ) THEN CALL copy_fcn ( & tracer(grid%sm31,grid%sm32,grid%sm33,itrace), & cids, cide, ckds, ckde, cjds, cjde, & cims, cime, ckms, ckme, cjms, cjme, & cips, cipe, ckps, MIN( (ckde-1), ckpe ), cjps, cjpe, & ngrid%tracer(ngrid%sm31,ngrid%sm32,ngrid%sm33,itrace), & nids, nide, nkds, nkde, njds, njde, & nims, nime, nkms, nkme, njms, njme, & nips, nipe, nkps, MIN( (nkde-1), nkpe ), njps, njpe, & config_flags%shw, ngrid%imask_nostag, & .FALSE., .FALSE., & ngrid%i_parent_start, ngrid%j_parent_start, & ngrid%parent_grid_ratio, ngrid%parent_grid_ratio & ) ENDIF ENDDO RETURN END SUBROUTINE feedback_domain_em_part1 SUBROUTINE feedback_domain_em_part2 ( grid, intermediate_grid, ngrid , config_flags & ,moist,moist_bxs,moist_bxe,moist_bys,moist_bye,moist_btxs,moist_btxe,moist_btys,moist_btye,dfi_moist,dfi_moist_bxs,dfi_moist_bxe, & dfi_moist_bys,dfi_moist_bye,dfi_moist_btxs,dfi_moist_btxe,dfi_moist_btys,dfi_moist_btye,scalar,scalar_bxs,scalar_bxe,scalar_bys, & scalar_bye,scalar_btxs,scalar_btxe,scalar_btys,scalar_btye,dfi_scalar,dfi_scalar_bxs,dfi_scalar_bxe,dfi_scalar_bys, & dfi_scalar_bye,dfi_scalar_btxs,dfi_scalar_btxe,dfi_scalar_btys,dfi_scalar_btye,ozmixm,aerosolc_1,aerosolc_2,fdda3d,fdda2d, & advh_t,advz_t,nba_mij,nba_rij,chem,tracer,tracer_bxs,tracer_bxe,tracer_bys,tracer_bye,tracer_btxs,tracer_btxe,tracer_btys, & tracer_btye & ) USE module_state_description USE module_domain, ONLY : domain, domain_clock_get, get_ijk_from_grid USE module_configure, ONLY : grid_config_rec_type, model_config_rec USE module_dm, ONLY : ntasks, ntasks_x, ntasks_y, itrace, local_communicator, mytask, & ipe_save, jpe_save, ips_save, jps_save, get_dm_max_halo_width USE module_comm_nesting_dm, ONLY : halo_interp_up_sub USE module_utility IMPLICIT NONE TYPE(domain), POINTER :: grid TYPE(domain), POINTER :: intermediate_grid TYPE(domain), POINTER :: ngrid real ,DIMENSION(grid%sm31:grid%em31,grid%sm32:grid%em32,grid%sm33:grid%em33,num_moist) :: moist real ,DIMENSION(grid%sm33:grid%em33,grid%sm32:grid%em32,grid%spec_bdy_width,num_moist) :: moist_bxs real ,DIMENSION(grid%sm33:grid%em33,grid%sm32:grid%em32,grid%spec_bdy_width,num_moist) :: moist_bxe real ,DIMENSION(grid%sm31:grid%em31,grid%sm32:grid%em32,grid%spec_bdy_width,num_moist) :: moist_bys real ,DIMENSION(grid%sm31:grid%em31,grid%sm32:grid%em32,grid%spec_bdy_width,num_moist) :: moist_bye real ,DIMENSION(grid%sm33:grid%em33,grid%sm32:grid%em32,grid%spec_bdy_width,num_moist) :: moist_btxs real ,DIMENSION(grid%sm33:grid%em33,grid%sm32:grid%em32,grid%spec_bdy_width,num_moist) :: moist_btxe real ,DIMENSION(grid%sm31:grid%em31,grid%sm32:grid%em32,grid%spec_bdy_width,num_moist) :: moist_btys real ,DIMENSION(grid%sm31:grid%em31,grid%sm32:grid%em32,grid%spec_bdy_width,num_moist) :: moist_btye real ,DIMENSION(grid%sm31:grid%em31,grid%sm32:grid%em32,grid%sm33:grid%em33,num_dfi_moist) :: dfi_moist real ,DIMENSION(grid%sm33:grid%em33,grid%sm32:grid%em32,grid%spec_bdy_width,num_dfi_moist) :: dfi_moist_bxs real ,DIMENSION(grid%sm33:grid%em33,grid%sm32:grid%em32,grid%spec_bdy_width,num_dfi_moist) :: dfi_moist_bxe real ,DIMENSION(grid%sm31:grid%em31,grid%sm32:grid%em32,grid%spec_bdy_width,num_dfi_moist) :: dfi_moist_bys real ,DIMENSION(grid%sm31:grid%em31,grid%sm32:grid%em32,grid%spec_bdy_width,num_dfi_moist) :: dfi_moist_bye real ,DIMENSION(grid%sm33:grid%em33,grid%sm32:grid%em32,grid%spec_bdy_width,num_dfi_moist) :: dfi_moist_btxs real ,DIMENSION(grid%sm33:grid%em33,grid%sm32:grid%em32,grid%spec_bdy_width,num_dfi_moist) :: dfi_moist_btxe real ,DIMENSION(grid%sm31:grid%em31,grid%sm32:grid%em32,grid%spec_bdy_width,num_dfi_moist) :: dfi_moist_btys real ,DIMENSION(grid%sm31:grid%em31,grid%sm32:grid%em32,grid%spec_bdy_width,num_dfi_moist) :: dfi_moist_btye real ,DIMENSION(grid%sm31:grid%em31,grid%sm32:grid%em32,grid%sm33:grid%em33,num_scalar) :: scalar real ,DIMENSION(grid%sm33:grid%em33,grid%sm32:grid%em32,grid%spec_bdy_width,num_scalar) :: scalar_bxs real ,DIMENSION(grid%sm33:grid%em33,grid%sm32:grid%em32,grid%spec_bdy_width,num_scalar) :: scalar_bxe real ,DIMENSION(grid%sm31:grid%em31,grid%sm32:grid%em32,grid%spec_bdy_width,num_scalar) :: scalar_bys real ,DIMENSION(grid%sm31:grid%em31,grid%sm32:grid%em32,grid%spec_bdy_width,num_scalar) :: scalar_bye real ,DIMENSION(grid%sm33:grid%em33,grid%sm32:grid%em32,grid%spec_bdy_width,num_scalar) :: scalar_btxs real ,DIMENSION(grid%sm33:grid%em33,grid%sm32:grid%em32,grid%spec_bdy_width,num_scalar) :: scalar_btxe real ,DIMENSION(grid%sm31:grid%em31,grid%sm32:grid%em32,grid%spec_bdy_width,num_scalar) :: scalar_btys real ,DIMENSION(grid%sm31:grid%em31,grid%sm32:grid%em32,grid%spec_bdy_width,num_scalar) :: scalar_btye real ,DIMENSION(grid%sm31:grid%em31,grid%sm32:grid%em32,grid%sm33:grid%em33,num_dfi_scalar) :: dfi_scalar real ,DIMENSION(grid%sm33:grid%em33,grid%sm32:grid%em32,grid%spec_bdy_width,num_dfi_scalar) :: dfi_scalar_bxs real ,DIMENSION(grid%sm33:grid%em33,grid%sm32:grid%em32,grid%spec_bdy_width,num_dfi_scalar) :: dfi_scalar_bxe real ,DIMENSION(grid%sm31:grid%em31,grid%sm32:grid%em32,grid%spec_bdy_width,num_dfi_scalar) :: dfi_scalar_bys real ,DIMENSION(grid%sm31:grid%em31,grid%sm32:grid%em32,grid%spec_bdy_width,num_dfi_scalar) :: dfi_scalar_bye real ,DIMENSION(grid%sm33:grid%em33,grid%sm32:grid%em32,grid%spec_bdy_width,num_dfi_scalar) :: dfi_scalar_btxs real ,DIMENSION(grid%sm33:grid%em33,grid%sm32:grid%em32,grid%spec_bdy_width,num_dfi_scalar) :: dfi_scalar_btxe real ,DIMENSION(grid%sm31:grid%em31,grid%sm32:grid%em32,grid%spec_bdy_width,num_dfi_scalar) :: dfi_scalar_btys real ,DIMENSION(grid%sm31:grid%em31,grid%sm32:grid%em32,grid%spec_bdy_width,num_dfi_scalar) :: dfi_scalar_btye real ,DIMENSION(grid%sm31:grid%em31,1:grid%levsiz,grid%sm33:grid%em33,num_ozmixm) :: ozmixm real ,DIMENSION(grid%sm31:grid%em31,1:grid%paerlev,grid%sm33:grid%em33,num_aerosolc) :: aerosolc_1 real ,DIMENSION(grid%sm31:grid%em31,1:grid%paerlev,grid%sm33:grid%em33,num_aerosolc) :: aerosolc_2 real ,DIMENSION(grid%sm31:grid%em31,grid%sm32:grid%em32,grid%sm33:grid%em33,num_fdda3d) :: fdda3d real ,DIMENSION(grid%sm31:grid%em31,1:1,grid%sm33:grid%em33,num_fdda2d) :: fdda2d real ,DIMENSION(grid%sm31:grid%em31,grid%sm32:grid%em32,grid%sm33:grid%em33,num_advh_t) :: advh_t real ,DIMENSION(grid%sm31:grid%em31,grid%sm32:grid%em32,grid%sm33:grid%em33,num_advz_t) :: advz_t real ,DIMENSION(grid%sm31:grid%em31,grid%sm32:grid%em32,grid%sm33:grid%em33,num_nba_mij) :: nba_mij real ,DIMENSION(grid%sm31:grid%em31,grid%sm32:grid%em32,grid%sm33:grid%em33,num_nba_rij) :: nba_rij real ,DIMENSION(grid%sm31:grid%em31,grid%sm32:grid%em32,grid%sm33:grid%em33,num_chem) :: chem real ,DIMENSION(grid%sm31:grid%em31,grid%sm32:grid%em32,grid%sm33:grid%em33,num_tracer) :: tracer real ,DIMENSION(grid%sm33:grid%em33,grid%sm32:grid%em32,grid%spec_bdy_width,num_tracer) :: tracer_bxs real ,DIMENSION(grid%sm33:grid%em33,grid%sm32:grid%em32,grid%spec_bdy_width,num_tracer) :: tracer_bxe real ,DIMENSION(grid%sm31:grid%em31,grid%sm32:grid%em32,grid%spec_bdy_width,num_tracer) :: tracer_bys real ,DIMENSION(grid%sm31:grid%em31,grid%sm32:grid%em32,grid%spec_bdy_width,num_tracer) :: tracer_bye real ,DIMENSION(grid%sm33:grid%em33,grid%sm32:grid%em32,grid%spec_bdy_width,num_tracer) :: tracer_btxs real ,DIMENSION(grid%sm33:grid%em33,grid%sm32:grid%em32,grid%spec_bdy_width,num_tracer) :: tracer_btxe real ,DIMENSION(grid%sm31:grid%em31,grid%sm32:grid%em32,grid%spec_bdy_width,num_tracer) :: tracer_btys real ,DIMENSION(grid%sm31:grid%em31,grid%sm32:grid%em32,grid%spec_bdy_width,num_tracer) :: tracer_btye INTEGER nlev, msize INTEGER i,j,pig,pjg,cm,cn,nig,njg,retval,k TYPE (grid_config_rec_type) :: config_flags REAL xv(500) 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 :: ids, ide, jds, jde, kds, kde, & ims, ime, jms, jme, kms, kme, & ips, ipe, jps, jpe, kps, kpe INTEGER idim1,idim2,idim3,idim4,idim5,idim6,idim7 INTEGER icoord, jcoord, idim_cd, jdim_cd INTEGER local_comm, myproc, nproc INTEGER iparstrt, jparstrt, sw, thisdomain_max_halo_width REAL nest_influence character*256 :: timestr integer ierr LOGICAL, EXTERNAL :: cd_feedback_mask nest_influence = 1. CALL domain_clock_get( grid, current_timestr=timestr ) CALL get_ijk_from_grid ( intermediate_grid , & cids, cide, cjds, cjde, ckds, ckde, & cims, cime, cjms, cjme, ckms, ckme, & cips, cipe, cjps, cjpe, ckps, ckpe ) CALL get_ijk_from_grid ( grid , & nids, nide, njds, njde, nkds, nkde, & nims, nime, njms, njme, nkms, nkme, & nips, nipe, njps, njpe, nkps, nkpe ) CALL nl_get_i_parent_start ( intermediate_grid%id, iparstrt ) CALL nl_get_j_parent_start ( intermediate_grid%id, jparstrt ) CALL nl_get_shw ( intermediate_grid%id, sw ) icoord = iparstrt - sw jcoord = jparstrt - sw idim_cd = cide - cids + 1 jdim_cd = cjde - cjds + 1 nlev = ckde - ckds + 1 CALL get_dm_max_halo_width ( grid%id , thisdomain_max_halo_width ) msize = (25 + ((num_moist - PARAM_FIRST_SCALAR + 1)) & + ((num_dfi_moist - PARAM_FIRST_SCALAR + 1)) & + ((num_scalar - PARAM_FIRST_SCALAR + 1)) & + ((num_dfi_scalar - PARAM_FIRST_SCALAR + 1)) & + ((num_ozmixm - PARAM_FIRST_SCALAR + 1)) & + ((num_aerosolc - PARAM_FIRST_SCALAR + 1)) & + ((num_fdda3d - PARAM_FIRST_SCALAR + 1)) & + ((num_fdda2d - PARAM_FIRST_SCALAR + 1)) & + ((num_advh_t - PARAM_FIRST_SCALAR + 1)) & + ((num_advz_t - PARAM_FIRST_SCALAR + 1)) & + ((num_nba_mij - PARAM_FIRST_SCALAR + 1)) & + ((num_nba_rij - PARAM_FIRST_SCALAR + 1)) & + ((num_chem - PARAM_FIRST_SCALAR + 1)) & + ((num_tracer - PARAM_FIRST_SCALAR + 1)) )* nlev + 196 CALL rsl_lite_to_parent_info( local_communicator, msize*4 & ,cips,cipe,cjps,cjpe & ,nids,nide,njds,njde & ,ntasks_x,ntasks_y & ,thisdomain_max_halo_width & ,icoord,jcoord & ,idim_cd,jdim_cd & ,pig,pjg,retval ) DO while ( retval .eq. 1 ) IF ( SIZE(grid%lu_index) .GT. 1 ) THEN xv(1)= intermediate_grid%lu_index(pig,pjg) CALL rsl_lite_to_parent_msg(4,xv) ENDIF IF ( SIZE(grid%u_2) .GT. 1 ) THEN DO k = ckds,(ckde-1) xv(k)= intermediate_grid%u_2(pig,k,pjg) ENDDO CALL rsl_lite_to_parent_msg((((ckde-1))-(ckds)+1)*4,xv) ENDIF IF ( SIZE(grid%v_2) .GT. 1 ) THEN DO k = ckds,(ckde-1) xv(k)= intermediate_grid%v_2(pig,k,pjg) ENDDO CALL rsl_lite_to_parent_msg((((ckde-1))-(ckds)+1)*4,xv) ENDIF IF ( SIZE(grid%w_2) .GT. 1 ) THEN DO k = ckds,ckde xv(k)= intermediate_grid%w_2(pig,k,pjg) ENDDO CALL rsl_lite_to_parent_msg(((ckde)-(ckds)+1)*4,xv) ENDIF IF ( SIZE(grid%ph_2) .GT. 1 ) THEN DO k = ckds,ckde xv(k)= intermediate_grid%ph_2(pig,k,pjg) ENDDO CALL rsl_lite_to_parent_msg(((ckde)-(ckds)+1)*4,xv) ENDIF IF ( SIZE(grid%phb) .GT. 1 ) THEN DO k = ckds,ckde xv(k)= intermediate_grid%phb(pig,k,pjg) ENDDO CALL rsl_lite_to_parent_msg(((ckde)-(ckds)+1)*4,xv) ENDIF IF ( SIZE(grid%t_2) .GT. 1 ) THEN DO k = ckds,(ckde-1) xv(k)= intermediate_grid%t_2(pig,k,pjg) ENDDO CALL rsl_lite_to_parent_msg((((ckde-1))-(ckds)+1)*4,xv) ENDIF IF ( SIZE(grid%mu_2) .GT. 1 ) THEN xv(1)= intermediate_grid%mu_2(pig,pjg) CALL rsl_lite_to_parent_msg(4,xv) ENDIF IF ( SIZE(grid%mub) .GT. 1 ) THEN xv(1)= intermediate_grid%mub(pig,pjg) CALL rsl_lite_to_parent_msg(4,xv) ENDIF IF ( SIZE(grid%nest_pos) .GT. 1 ) THEN xv(1)= intermediate_grid%nest_pos(pig,pjg) CALL rsl_lite_to_parent_msg(4,xv) ENDIF IF ( SIZE(grid%nest_mask) .GT. 1 ) THEN xv(1)= intermediate_grid%nest_mask(pig,pjg) CALL rsl_lite_to_parent_msg(4,xv) ENDIF IF ( SIZE(grid%alb) .GT. 1 ) THEN DO k = ckds,(ckde-1) xv(k)= intermediate_grid%alb(pig,k,pjg) ENDDO CALL rsl_lite_to_parent_msg((((ckde-1))-(ckds)+1)*4,xv) ENDIF IF ( SIZE(grid%pb) .GT. 1 ) THEN DO k = ckds,(ckde-1) xv(k)= intermediate_grid%pb(pig,k,pjg) ENDDO CALL rsl_lite_to_parent_msg((((ckde-1))-(ckds)+1)*4,xv) ENDIF DO itrace = PARAM_FIRST_SCALAR, num_moist DO k = ckds,(ckde-1) xv(k)= intermediate_grid%moist(pig,k,pjg,itrace) ENDDO CALL rsl_lite_to_parent_msg((((ckde-1))-(ckds)+1)*4,xv) ENDDO DO itrace = PARAM_FIRST_SCALAR, num_dfi_moist DO k = ckds,(ckde-1) xv(k)= intermediate_grid%dfi_moist(pig,k,pjg,itrace) ENDDO CALL rsl_lite_to_parent_msg((((ckde-1))-(ckds)+1)*4,xv) ENDDO DO itrace = PARAM_FIRST_SCALAR, num_scalar DO k = ckds,(ckde-1) xv(k)= intermediate_grid%scalar(pig,k,pjg,itrace) ENDDO CALL rsl_lite_to_parent_msg((((ckde-1))-(ckds)+1)*4,xv) ENDDO DO itrace = PARAM_FIRST_SCALAR, num_dfi_scalar DO k = ckds,(ckde-1) xv(k)= intermediate_grid%dfi_scalar(pig,k,pjg,itrace) ENDDO CALL rsl_lite_to_parent_msg((((ckde-1))-(ckds)+1)*4,xv) ENDDO IF ( SIZE(grid%toposlpx) .GT. 1 ) THEN xv(1)= intermediate_grid%toposlpx(pig,pjg) CALL rsl_lite_to_parent_msg(4,xv) ENDIF IF ( SIZE(grid%toposlpy) .GT. 1 ) THEN xv(1)= intermediate_grid%toposlpy(pig,pjg) CALL rsl_lite_to_parent_msg(4,xv) ENDIF IF ( SIZE(grid%slope) .GT. 1 ) THEN xv(1)= intermediate_grid%slope(pig,pjg) CALL rsl_lite_to_parent_msg(4,xv) ENDIF IF ( SIZE(grid%slp_azi) .GT. 1 ) THEN xv(1)= intermediate_grid%slp_azi(pig,pjg) CALL rsl_lite_to_parent_msg(4,xv) ENDIF IF ( SIZE(grid%shdmax) .GT. 1 ) THEN xv(1)= intermediate_grid%shdmax(pig,pjg) CALL rsl_lite_to_parent_msg(4,xv) ENDIF IF ( SIZE(grid%shdmin) .GT. 1 ) THEN xv(1)= intermediate_grid%shdmin(pig,pjg) CALL rsl_lite_to_parent_msg(4,xv) ENDIF IF ( SIZE(grid%tslb) .GT. 1 ) THEN DO k = 1,config_flags%num_soil_layers xv(k)= intermediate_grid%tslb(pig,k,pjg) ENDDO CALL rsl_lite_to_parent_msg(((config_flags%num_soil_layers)-(1)+1)*4,xv) ENDIF IF ( SIZE(grid%smois) .GT. 1 ) THEN DO k = 1,config_flags%num_soil_layers xv(k)= intermediate_grid%smois(pig,k,pjg) ENDDO CALL rsl_lite_to_parent_msg(((config_flags%num_soil_layers)-(1)+1)*4,xv) ENDIF IF ( SIZE(grid%sh2o) .GT. 1 ) THEN DO k = 1,config_flags%num_soil_layers xv(k)= intermediate_grid%sh2o(pig,k,pjg) ENDDO CALL rsl_lite_to_parent_msg(((config_flags%num_soil_layers)-(1)+1)*4,xv) ENDIF IF ( SIZE(grid%smcrel) .GT. 1 ) THEN DO k = 1,config_flags%num_soil_layers xv(k)= intermediate_grid%smcrel(pig,k,pjg) ENDDO CALL rsl_lite_to_parent_msg(((config_flags%num_soil_layers)-(1)+1)*4,xv) ENDIF IF ( SIZE(grid%xice) .GT. 1 ) THEN xv(1)= intermediate_grid%xice(pig,pjg) CALL rsl_lite_to_parent_msg(4,xv) ENDIF IF ( SIZE(grid%xicem) .GT. 1 ) THEN xv(1)= intermediate_grid%xicem(pig,pjg) CALL rsl_lite_to_parent_msg(4,xv) ENDIF IF ( SIZE(grid%ivgtyp) .GT. 1 ) THEN xv(1)= intermediate_grid%ivgtyp(pig,pjg) CALL rsl_lite_to_parent_msg(4,xv) ENDIF IF ( SIZE(grid%isltyp) .GT. 1 ) THEN xv(1)= intermediate_grid%isltyp(pig,pjg) CALL rsl_lite_to_parent_msg(4,xv) ENDIF IF ( SIZE(grid%vegfra) .GT. 1 ) THEN xv(1)= intermediate_grid%vegfra(pig,pjg) CALL rsl_lite_to_parent_msg(4,xv) ENDIF IF ( SIZE(grid%acgrdflx) .GT. 1 ) THEN xv(1)= intermediate_grid%acgrdflx(pig,pjg) CALL rsl_lite_to_parent_msg(4,xv) ENDIF IF ( SIZE(grid%acsnow) .GT. 1 ) THEN xv(1)= intermediate_grid%acsnow(pig,pjg) CALL rsl_lite_to_parent_msg(4,xv) ENDIF IF ( SIZE(grid%acsnom) .GT. 1 ) THEN xv(1)= intermediate_grid%acsnom(pig,pjg) CALL rsl_lite_to_parent_msg(4,xv) ENDIF IF ( SIZE(grid%snow) .GT. 1 ) THEN xv(1)= intermediate_grid%snow(pig,pjg) CALL rsl_lite_to_parent_msg(4,xv) ENDIF IF ( SIZE(grid%snowh) .GT. 1 ) THEN xv(1)= intermediate_grid%snowh(pig,pjg) CALL rsl_lite_to_parent_msg(4,xv) ENDIF IF ( SIZE(grid%canwat) .GT. 1 ) THEN xv(1)= intermediate_grid%canwat(pig,pjg) CALL rsl_lite_to_parent_msg(4,xv) ENDIF IF ( SIZE(grid%tr_urb2d) .GT. 1 ) THEN xv(1)= intermediate_grid%tr_urb2d(pig,pjg) CALL rsl_lite_to_parent_msg(4,xv) ENDIF IF ( SIZE(grid%tb_urb2d) .GT. 1 ) THEN xv(1)= intermediate_grid%tb_urb2d(pig,pjg) CALL rsl_lite_to_parent_msg(4,xv) ENDIF IF ( SIZE(grid%tg_urb2d) .GT. 1 ) THEN xv(1)= intermediate_grid%tg_urb2d(pig,pjg) CALL rsl_lite_to_parent_msg(4,xv) ENDIF IF ( SIZE(grid%tc_urb2d) .GT. 1 ) THEN xv(1)= intermediate_grid%tc_urb2d(pig,pjg) CALL rsl_lite_to_parent_msg(4,xv) ENDIF IF ( SIZE(grid%qc_urb2d) .GT. 1 ) THEN xv(1)= intermediate_grid%qc_urb2d(pig,pjg) CALL rsl_lite_to_parent_msg(4,xv) ENDIF IF ( SIZE(grid%uc_urb2d) .GT. 1 ) THEN xv(1)= intermediate_grid%uc_urb2d(pig,pjg) CALL rsl_lite_to_parent_msg(4,xv) ENDIF IF ( SIZE(grid%xxxr_urb2d) .GT. 1 ) THEN xv(1)= intermediate_grid%xxxr_urb2d(pig,pjg) CALL rsl_lite_to_parent_msg(4,xv) ENDIF IF ( SIZE(grid%xxxb_urb2d) .GT. 1 ) THEN xv(1)= intermediate_grid%xxxb_urb2d(pig,pjg) CALL rsl_lite_to_parent_msg(4,xv) ENDIF IF ( SIZE(grid%xxxg_urb2d) .GT. 1 ) THEN xv(1)= intermediate_grid%xxxg_urb2d(pig,pjg) CALL rsl_lite_to_parent_msg(4,xv) ENDIF IF ( SIZE(grid%xxxc_urb2d) .GT. 1 ) THEN xv(1)= intermediate_grid%xxxc_urb2d(pig,pjg) CALL rsl_lite_to_parent_msg(4,xv) ENDIF IF ( SIZE(grid%trl_urb3d) .GT. 1 ) THEN DO k = 1,config_flags%num_soil_layers xv(k)= intermediate_grid%trl_urb3d(pig,k,pjg) ENDDO CALL rsl_lite_to_parent_msg(((config_flags%num_soil_layers)-(1)+1)*4,xv) ENDIF IF ( SIZE(grid%tbl_urb3d) .GT. 1 ) THEN DO k = 1,config_flags%num_soil_layers xv(k)= intermediate_grid%tbl_urb3d(pig,k,pjg) ENDDO CALL rsl_lite_to_parent_msg(((config_flags%num_soil_layers)-(1)+1)*4,xv) ENDIF IF ( SIZE(grid%tgl_urb3d) .GT. 1 ) THEN DO k = 1,config_flags%num_soil_layers xv(k)= intermediate_grid%tgl_urb3d(pig,k,pjg) ENDDO CALL rsl_lite_to_parent_msg(((config_flags%num_soil_layers)-(1)+1)*4,xv) ENDIF IF ( SIZE(grid%frc_urb2d) .GT. 1 ) THEN xv(1)= intermediate_grid%frc_urb2d(pig,pjg) CALL rsl_lite_to_parent_msg(4,xv) ENDIF IF ( SIZE(grid%utype_urb2d) .GT. 1 ) THEN xv(1)= intermediate_grid%utype_urb2d(pig,pjg) CALL rsl_lite_to_parent_msg(4,xv) ENDIF IF ( SIZE(grid%var2d) .GT. 1 ) THEN xv(1)= intermediate_grid%var2d(pig,pjg) CALL rsl_lite_to_parent_msg(4,xv) ENDIF IF ( SIZE(grid%oc12d) .GT. 1 ) THEN xv(1)= intermediate_grid%oc12d(pig,pjg) CALL rsl_lite_to_parent_msg(4,xv) ENDIF IF ( SIZE(grid%oa1) .GT. 1 ) THEN xv(1)= intermediate_grid%oa1(pig,pjg) CALL rsl_lite_to_parent_msg(4,xv) ENDIF IF ( SIZE(grid%oa2) .GT. 1 ) THEN xv(1)= intermediate_grid%oa2(pig,pjg) CALL rsl_lite_to_parent_msg(4,xv) ENDIF IF ( SIZE(grid%oa3) .GT. 1 ) THEN xv(1)= intermediate_grid%oa3(pig,pjg) CALL rsl_lite_to_parent_msg(4,xv) ENDIF IF ( SIZE(grid%oa4) .GT. 1 ) THEN xv(1)= intermediate_grid%oa4(pig,pjg) CALL rsl_lite_to_parent_msg(4,xv) ENDIF IF ( SIZE(grid%ol1) .GT. 1 ) THEN xv(1)= intermediate_grid%ol1(pig,pjg) CALL rsl_lite_to_parent_msg(4,xv) ENDIF IF ( SIZE(grid%ol2) .GT. 1 ) THEN xv(1)= intermediate_grid%ol2(pig,pjg) CALL rsl_lite_to_parent_msg(4,xv) ENDIF IF ( SIZE(grid%ol3) .GT. 1 ) THEN xv(1)= intermediate_grid%ol3(pig,pjg) CALL rsl_lite_to_parent_msg(4,xv) ENDIF IF ( SIZE(grid%ol4) .GT. 1 ) THEN xv(1)= intermediate_grid%ol4(pig,pjg) CALL rsl_lite_to_parent_msg(4,xv) ENDIF IF ( SIZE(grid%f_ice_phy) .GT. 1 ) THEN DO k = ckds,(ckde-1) xv(k)= intermediate_grid%f_ice_phy(pig,k,pjg) ENDDO CALL rsl_lite_to_parent_msg((((ckde-1))-(ckds)+1)*4,xv) ENDIF IF ( SIZE(grid%f_rain_phy) .GT. 1 ) THEN DO k = ckds,(ckde-1) xv(k)= intermediate_grid%f_rain_phy(pig,k,pjg) ENDDO CALL rsl_lite_to_parent_msg((((ckde-1))-(ckds)+1)*4,xv) ENDIF IF ( SIZE(grid%f_rimef_phy) .GT. 1 ) THEN DO k = ckds,(ckde-1) xv(k)= intermediate_grid%f_rimef_phy(pig,k,pjg) ENDDO CALL rsl_lite_to_parent_msg((((ckde-1))-(ckds)+1)*4,xv) ENDIF IF ( SIZE(grid%h_diabatic) .GT. 1 ) THEN DO k = ckds,(ckde-1) xv(k)= intermediate_grid%h_diabatic(pig,k,pjg) ENDDO CALL rsl_lite_to_parent_msg((((ckde-1))-(ckds)+1)*4,xv) ENDIF IF ( SIZE(grid%msft) .GT. 1 ) THEN xv(1)= intermediate_grid%msft(pig,pjg) CALL rsl_lite_to_parent_msg(4,xv) ENDIF IF ( SIZE(grid%msfu) .GT. 1 ) THEN xv(1)= intermediate_grid%msfu(pig,pjg) CALL rsl_lite_to_parent_msg(4,xv) ENDIF IF ( SIZE(grid%msfv) .GT. 1 ) THEN xv(1)= intermediate_grid%msfv(pig,pjg) CALL rsl_lite_to_parent_msg(4,xv) ENDIF IF ( SIZE(grid%msftx) .GT. 1 ) THEN xv(1)= intermediate_grid%msftx(pig,pjg) CALL rsl_lite_to_parent_msg(4,xv) ENDIF IF ( SIZE(grid%msfty) .GT. 1 ) THEN xv(1)= intermediate_grid%msfty(pig,pjg) CALL rsl_lite_to_parent_msg(4,xv) ENDIF IF ( SIZE(grid%msfux) .GT. 1 ) THEN xv(1)= intermediate_grid%msfux(pig,pjg) CALL rsl_lite_to_parent_msg(4,xv) ENDIF IF ( SIZE(grid%msfuy) .GT. 1 ) THEN xv(1)= intermediate_grid%msfuy(pig,pjg) CALL rsl_lite_to_parent_msg(4,xv) ENDIF IF ( SIZE(grid%msfvx) .GT. 1 ) THEN xv(1)= intermediate_grid%msfvx(pig,pjg) CALL rsl_lite_to_parent_msg(4,xv) ENDIF IF ( SIZE(grid%msfvx_inv) .GT. 1 ) THEN xv(1)= intermediate_grid%msfvx_inv(pig,pjg) CALL rsl_lite_to_parent_msg(4,xv) ENDIF IF ( SIZE(grid%msfvy) .GT. 1 ) THEN xv(1)= intermediate_grid%msfvy(pig,pjg) CALL rsl_lite_to_parent_msg(4,xv) ENDIF IF ( SIZE(grid%f) .GT. 1 ) THEN xv(1)= intermediate_grid%f(pig,pjg) CALL rsl_lite_to_parent_msg(4,xv) ENDIF IF ( SIZE(grid%e) .GT. 1 ) THEN xv(1)= intermediate_grid%e(pig,pjg) CALL rsl_lite_to_parent_msg(4,xv) ENDIF IF ( SIZE(grid%sina) .GT. 1 ) THEN xv(1)= intermediate_grid%sina(pig,pjg) CALL rsl_lite_to_parent_msg(4,xv) ENDIF IF ( SIZE(grid%cosa) .GT. 1 ) THEN xv(1)= intermediate_grid%cosa(pig,pjg) CALL rsl_lite_to_parent_msg(4,xv) ENDIF IF ( SIZE(grid%ht) .GT. 1 ) THEN xv(1)= intermediate_grid%ht(pig,pjg) CALL rsl_lite_to_parent_msg(4,xv) ENDIF IF ( SIZE(grid%tsk) .GT. 1 ) THEN xv(1)= intermediate_grid%tsk(pig,pjg) CALL rsl_lite_to_parent_msg(4,xv) ENDIF IF ( SIZE(grid%rainc) .GT. 1 ) THEN xv(1)= intermediate_grid%rainc(pig,pjg) CALL rsl_lite_to_parent_msg(4,xv) ENDIF IF ( SIZE(grid%rainsh) .GT. 1 ) THEN xv(1)= intermediate_grid%rainsh(pig,pjg) CALL rsl_lite_to_parent_msg(4,xv) ENDIF IF ( SIZE(grid%rainnc) .GT. 1 ) THEN xv(1)= intermediate_grid%rainnc(pig,pjg) CALL rsl_lite_to_parent_msg(4,xv) ENDIF IF ( SIZE(grid%i_rainc) .GT. 1 ) THEN xv(1)= intermediate_grid%i_rainc(pig,pjg) CALL rsl_lite_to_parent_msg(4,xv) ENDIF IF ( SIZE(grid%i_rainnc) .GT. 1 ) THEN xv(1)= intermediate_grid%i_rainnc(pig,pjg) CALL rsl_lite_to_parent_msg(4,xv) ENDIF IF ( SIZE(grid%snownc) .GT. 1 ) THEN xv(1)= intermediate_grid%snownc(pig,pjg) CALL rsl_lite_to_parent_msg(4,xv) ENDIF IF ( SIZE(grid%graupelnc) .GT. 1 ) THEN xv(1)= intermediate_grid%graupelnc(pig,pjg) CALL rsl_lite_to_parent_msg(4,xv) ENDIF IF ( SIZE(grid%hailnc) .GT. 1 ) THEN xv(1)= intermediate_grid%hailnc(pig,pjg) CALL rsl_lite_to_parent_msg(4,xv) ENDIF IF ( SIZE(grid%refl_10cm) .GT. 1 ) THEN DO k = ckds,(ckde-1) xv(k)= intermediate_grid%refl_10cm(pig,k,pjg) ENDDO CALL rsl_lite_to_parent_msg((((ckde-1))-(ckds)+1)*4,xv) ENDIF IF ( SIZE(grid%acswupt) .GT. 1 ) THEN xv(1)= intermediate_grid%acswupt(pig,pjg) CALL rsl_lite_to_parent_msg(4,xv) ENDIF IF ( SIZE(grid%acswuptc) .GT. 1 ) THEN xv(1)= intermediate_grid%acswuptc(pig,pjg) CALL rsl_lite_to_parent_msg(4,xv) ENDIF IF ( SIZE(grid%acswdnt) .GT. 1 ) THEN xv(1)= intermediate_grid%acswdnt(pig,pjg) CALL rsl_lite_to_parent_msg(4,xv) ENDIF IF ( SIZE(grid%acswdntc) .GT. 1 ) THEN xv(1)= intermediate_grid%acswdntc(pig,pjg) CALL rsl_lite_to_parent_msg(4,xv) ENDIF IF ( SIZE(grid%acswupb) .GT. 1 ) THEN xv(1)= intermediate_grid%acswupb(pig,pjg) CALL rsl_lite_to_parent_msg(4,xv) ENDIF IF ( SIZE(grid%acswupbc) .GT. 1 ) THEN xv(1)= intermediate_grid%acswupbc(pig,pjg) CALL rsl_lite_to_parent_msg(4,xv) ENDIF IF ( SIZE(grid%acswdnb) .GT. 1 ) THEN xv(1)= intermediate_grid%acswdnb(pig,pjg) CALL rsl_lite_to_parent_msg(4,xv) ENDIF IF ( SIZE(grid%acswdnbc) .GT. 1 ) THEN xv(1)= intermediate_grid%acswdnbc(pig,pjg) CALL rsl_lite_to_parent_msg(4,xv) ENDIF IF ( SIZE(grid%aclwupt) .GT. 1 ) THEN xv(1)= intermediate_grid%aclwupt(pig,pjg) CALL rsl_lite_to_parent_msg(4,xv) ENDIF IF ( SIZE(grid%aclwuptc) .GT. 1 ) THEN xv(1)= intermediate_grid%aclwuptc(pig,pjg) CALL rsl_lite_to_parent_msg(4,xv) ENDIF IF ( SIZE(grid%aclwdnt) .GT. 1 ) THEN xv(1)= intermediate_grid%aclwdnt(pig,pjg) CALL rsl_lite_to_parent_msg(4,xv) ENDIF IF ( SIZE(grid%aclwdntc) .GT. 1 ) THEN xv(1)= intermediate_grid%aclwdntc(pig,pjg) CALL rsl_lite_to_parent_msg(4,xv) ENDIF IF ( SIZE(grid%aclwupb) .GT. 1 ) THEN xv(1)= intermediate_grid%aclwupb(pig,pjg) CALL rsl_lite_to_parent_msg(4,xv) ENDIF IF ( SIZE(grid%aclwupbc) .GT. 1 ) THEN xv(1)= intermediate_grid%aclwupbc(pig,pjg) CALL rsl_lite_to_parent_msg(4,xv) ENDIF IF ( SIZE(grid%aclwdnb) .GT. 1 ) THEN xv(1)= intermediate_grid%aclwdnb(pig,pjg) CALL rsl_lite_to_parent_msg(4,xv) ENDIF IF ( SIZE(grid%aclwdnbc) .GT. 1 ) THEN xv(1)= intermediate_grid%aclwdnbc(pig,pjg) CALL rsl_lite_to_parent_msg(4,xv) ENDIF IF ( SIZE(grid%i_acswupt) .GT. 1 ) THEN xv(1)= intermediate_grid%i_acswupt(pig,pjg) CALL rsl_lite_to_parent_msg(4,xv) ENDIF IF ( SIZE(grid%i_acswuptc) .GT. 1 ) THEN xv(1)= intermediate_grid%i_acswuptc(pig,pjg) CALL rsl_lite_to_parent_msg(4,xv) ENDIF IF ( SIZE(grid%i_acswdnt) .GT. 1 ) THEN xv(1)= intermediate_grid%i_acswdnt(pig,pjg) CALL rsl_lite_to_parent_msg(4,xv) ENDIF IF ( SIZE(grid%i_acswdntc) .GT. 1 ) THEN xv(1)= intermediate_grid%i_acswdntc(pig,pjg) CALL rsl_lite_to_parent_msg(4,xv) ENDIF IF ( SIZE(grid%i_acswupb) .GT. 1 ) THEN xv(1)= intermediate_grid%i_acswupb(pig,pjg) CALL rsl_lite_to_parent_msg(4,xv) ENDIF IF ( SIZE(grid%i_acswupbc) .GT. 1 ) THEN xv(1)= intermediate_grid%i_acswupbc(pig,pjg) CALL rsl_lite_to_parent_msg(4,xv) ENDIF IF ( SIZE(grid%i_acswdnb) .GT. 1 ) THEN xv(1)= intermediate_grid%i_acswdnb(pig,pjg) CALL rsl_lite_to_parent_msg(4,xv) ENDIF IF ( SIZE(grid%i_acswdnbc) .GT. 1 ) THEN xv(1)= intermediate_grid%i_acswdnbc(pig,pjg) CALL rsl_lite_to_parent_msg(4,xv) ENDIF IF ( SIZE(grid%i_aclwupt) .GT. 1 ) THEN xv(1)= intermediate_grid%i_aclwupt(pig,pjg) CALL rsl_lite_to_parent_msg(4,xv) ENDIF IF ( SIZE(grid%i_aclwuptc) .GT. 1 ) THEN xv(1)= intermediate_grid%i_aclwuptc(pig,pjg) CALL rsl_lite_to_parent_msg(4,xv) ENDIF IF ( SIZE(grid%i_aclwdnt) .GT. 1 ) THEN xv(1)= intermediate_grid%i_aclwdnt(pig,pjg) CALL rsl_lite_to_parent_msg(4,xv) ENDIF IF ( SIZE(grid%i_aclwdntc) .GT. 1 ) THEN xv(1)= intermediate_grid%i_aclwdntc(pig,pjg) CALL rsl_lite_to_parent_msg(4,xv) ENDIF IF ( SIZE(grid%i_aclwupb) .GT. 1 ) THEN xv(1)= intermediate_grid%i_aclwupb(pig,pjg) CALL rsl_lite_to_parent_msg(4,xv) ENDIF IF ( SIZE(grid%i_aclwupbc) .GT. 1 ) THEN xv(1)= intermediate_grid%i_aclwupbc(pig,pjg) CALL rsl_lite_to_parent_msg(4,xv) ENDIF IF ( SIZE(grid%i_aclwdnb) .GT. 1 ) THEN xv(1)= intermediate_grid%i_aclwdnb(pig,pjg) CALL rsl_lite_to_parent_msg(4,xv) ENDIF IF ( SIZE(grid%i_aclwdnbc) .GT. 1 ) THEN xv(1)= intermediate_grid%i_aclwdnbc(pig,pjg) CALL rsl_lite_to_parent_msg(4,xv) ENDIF IF ( SIZE(grid%swupt) .GT. 1 ) THEN xv(1)= intermediate_grid%swupt(pig,pjg) CALL rsl_lite_to_parent_msg(4,xv) ENDIF IF ( SIZE(grid%swuptc) .GT. 1 ) THEN xv(1)= intermediate_grid%swuptc(pig,pjg) CALL rsl_lite_to_parent_msg(4,xv) ENDIF IF ( SIZE(grid%swdnt) .GT. 1 ) THEN xv(1)= intermediate_grid%swdnt(pig,pjg) CALL rsl_lite_to_parent_msg(4,xv) ENDIF IF ( SIZE(grid%swdntc) .GT. 1 ) THEN xv(1)= intermediate_grid%swdntc(pig,pjg) CALL rsl_lite_to_parent_msg(4,xv) ENDIF IF ( SIZE(grid%swupb) .GT. 1 ) THEN xv(1)= intermediate_grid%swupb(pig,pjg) CALL rsl_lite_to_parent_msg(4,xv) ENDIF IF ( SIZE(grid%swupbc) .GT. 1 ) THEN xv(1)= intermediate_grid%swupbc(pig,pjg) CALL rsl_lite_to_parent_msg(4,xv) ENDIF IF ( SIZE(grid%swdnb) .GT. 1 ) THEN xv(1)= intermediate_grid%swdnb(pig,pjg) CALL rsl_lite_to_parent_msg(4,xv) ENDIF IF ( SIZE(grid%swdnbc) .GT. 1 ) THEN xv(1)= intermediate_grid%swdnbc(pig,pjg) CALL rsl_lite_to_parent_msg(4,xv) ENDIF IF ( SIZE(grid%lwupt) .GT. 1 ) THEN xv(1)= intermediate_grid%lwupt(pig,pjg) CALL rsl_lite_to_parent_msg(4,xv) ENDIF IF ( SIZE(grid%lwuptc) .GT. 1 ) THEN xv(1)= intermediate_grid%lwuptc(pig,pjg) CALL rsl_lite_to_parent_msg(4,xv) ENDIF IF ( SIZE(grid%lwdnt) .GT. 1 ) THEN xv(1)= intermediate_grid%lwdnt(pig,pjg) CALL rsl_lite_to_parent_msg(4,xv) ENDIF IF ( SIZE(grid%lwdntc) .GT. 1 ) THEN xv(1)= intermediate_grid%lwdntc(pig,pjg) CALL rsl_lite_to_parent_msg(4,xv) ENDIF IF ( SIZE(grid%lwupb) .GT. 1 ) THEN xv(1)= intermediate_grid%lwupb(pig,pjg) CALL rsl_lite_to_parent_msg(4,xv) ENDIF IF ( SIZE(grid%lwupbc) .GT. 1 ) THEN xv(1)= intermediate_grid%lwupbc(pig,pjg) CALL rsl_lite_to_parent_msg(4,xv) ENDIF IF ( SIZE(grid%lwdnb) .GT. 1 ) THEN xv(1)= intermediate_grid%lwdnb(pig,pjg) CALL rsl_lite_to_parent_msg(4,xv) ENDIF IF ( SIZE(grid%lwdnbc) .GT. 1 ) THEN xv(1)= intermediate_grid%lwdnbc(pig,pjg) CALL rsl_lite_to_parent_msg(4,xv) ENDIF IF ( SIZE(grid%xlat) .GT. 1 ) THEN xv(1)= intermediate_grid%xlat(pig,pjg) CALL rsl_lite_to_parent_msg(4,xv) ENDIF IF ( SIZE(grid%xlong) .GT. 1 ) THEN xv(1)= intermediate_grid%xlong(pig,pjg) CALL rsl_lite_to_parent_msg(4,xv) ENDIF IF ( SIZE(grid%xlat_u) .GT. 1 ) THEN xv(1)= intermediate_grid%xlat_u(pig,pjg) CALL rsl_lite_to_parent_msg(4,xv) ENDIF IF ( SIZE(grid%xlong_u) .GT. 1 ) THEN xv(1)= intermediate_grid%xlong_u(pig,pjg) CALL rsl_lite_to_parent_msg(4,xv) ENDIF IF ( SIZE(grid%xlat_v) .GT. 1 ) THEN xv(1)= intermediate_grid%xlat_v(pig,pjg) CALL rsl_lite_to_parent_msg(4,xv) ENDIF IF ( SIZE(grid%xlong_v) .GT. 1 ) THEN xv(1)= intermediate_grid%xlong_v(pig,pjg) CALL rsl_lite_to_parent_msg(4,xv) ENDIF IF ( SIZE(grid%clat) .GT. 1 ) THEN xv(1)= intermediate_grid%clat(pig,pjg) CALL rsl_lite_to_parent_msg(4,xv) ENDIF IF ( SIZE(grid%isnowxy) .GT. 1 ) THEN xv(1)= intermediate_grid%isnowxy(pig,pjg) CALL rsl_lite_to_parent_msg(4,xv) ENDIF IF ( SIZE(grid%tvxy) .GT. 1 ) THEN xv(1)= intermediate_grid%tvxy(pig,pjg) CALL rsl_lite_to_parent_msg(4,xv) ENDIF IF ( SIZE(grid%tgxy) .GT. 1 ) THEN xv(1)= intermediate_grid%tgxy(pig,pjg) CALL rsl_lite_to_parent_msg(4,xv) ENDIF IF ( SIZE(grid%canliqxy) .GT. 1 ) THEN xv(1)= intermediate_grid%canliqxy(pig,pjg) CALL rsl_lite_to_parent_msg(4,xv) ENDIF IF ( SIZE(grid%canicexy) .GT. 1 ) THEN xv(1)= intermediate_grid%canicexy(pig,pjg) CALL rsl_lite_to_parent_msg(4,xv) ENDIF IF ( SIZE(grid%eahxy) .GT. 1 ) THEN xv(1)= intermediate_grid%eahxy(pig,pjg) CALL rsl_lite_to_parent_msg(4,xv) ENDIF IF ( SIZE(grid%tahxy) .GT. 1 ) THEN xv(1)= intermediate_grid%tahxy(pig,pjg) CALL rsl_lite_to_parent_msg(4,xv) ENDIF IF ( SIZE(grid%cmxy) .GT. 1 ) THEN xv(1)= intermediate_grid%cmxy(pig,pjg) CALL rsl_lite_to_parent_msg(4,xv) ENDIF IF ( SIZE(grid%chxy) .GT. 1 ) THEN xv(1)= intermediate_grid%chxy(pig,pjg) CALL rsl_lite_to_parent_msg(4,xv) ENDIF IF ( SIZE(grid%fwetxy) .GT. 1 ) THEN xv(1)= intermediate_grid%fwetxy(pig,pjg) CALL rsl_lite_to_parent_msg(4,xv) ENDIF IF ( SIZE(grid%sneqvoxy) .GT. 1 ) THEN xv(1)= intermediate_grid%sneqvoxy(pig,pjg) CALL rsl_lite_to_parent_msg(4,xv) ENDIF IF ( SIZE(grid%alboldxy) .GT. 1 ) THEN xv(1)= intermediate_grid%alboldxy(pig,pjg) CALL rsl_lite_to_parent_msg(4,xv) ENDIF IF ( SIZE(grid%qsnowxy) .GT. 1 ) THEN xv(1)= intermediate_grid%qsnowxy(pig,pjg) CALL rsl_lite_to_parent_msg(4,xv) ENDIF IF ( SIZE(grid%wslakexy) .GT. 1 ) THEN xv(1)= intermediate_grid%wslakexy(pig,pjg) CALL rsl_lite_to_parent_msg(4,xv) ENDIF IF ( SIZE(grid%zwtxy) .GT. 1 ) THEN xv(1)= intermediate_grid%zwtxy(pig,pjg) CALL rsl_lite_to_parent_msg(4,xv) ENDIF IF ( SIZE(grid%waxy) .GT. 1 ) THEN xv(1)= intermediate_grid%waxy(pig,pjg) CALL rsl_lite_to_parent_msg(4,xv) ENDIF IF ( SIZE(grid%wtxy) .GT. 1 ) THEN xv(1)= intermediate_grid%wtxy(pig,pjg) CALL rsl_lite_to_parent_msg(4,xv) ENDIF IF ( SIZE(grid%zsnsoxy) .GT. 1 ) THEN DO k = 1,config_flags%num_snso_layers xv(k)= intermediate_grid%zsnsoxy(pig,k,pjg) ENDDO CALL rsl_lite_to_parent_msg(((config_flags%num_snso_layers)-(1)+1)*4,xv) ENDIF IF ( SIZE(grid%tsnoxy) .GT. 1 ) THEN DO k = 1,config_flags%num_snow_layers xv(k)= intermediate_grid%tsnoxy(pig,k,pjg) ENDDO CALL rsl_lite_to_parent_msg(((config_flags%num_snow_layers)-(1)+1)*4,xv) ENDIF IF ( SIZE(grid%snicexy) .GT. 1 ) THEN DO k = 1,config_flags%num_snow_layers xv(k)= intermediate_grid%snicexy(pig,k,pjg) ENDDO CALL rsl_lite_to_parent_msg(((config_flags%num_snow_layers)-(1)+1)*4,xv) ENDIF IF ( SIZE(grid%snliqxy) .GT. 1 ) THEN DO k = 1,config_flags%num_snow_layers xv(k)= intermediate_grid%snliqxy(pig,k,pjg) ENDDO CALL rsl_lite_to_parent_msg(((config_flags%num_snow_layers)-(1)+1)*4,xv) ENDIF IF ( SIZE(grid%lfmassxy) .GT. 1 ) THEN xv(1)= intermediate_grid%lfmassxy(pig,pjg) CALL rsl_lite_to_parent_msg(4,xv) ENDIF IF ( SIZE(grid%rtmassxy) .GT. 1 ) THEN xv(1)= intermediate_grid%rtmassxy(pig,pjg) CALL rsl_lite_to_parent_msg(4,xv) ENDIF IF ( SIZE(grid%stmassxy) .GT. 1 ) THEN xv(1)= intermediate_grid%stmassxy(pig,pjg) CALL rsl_lite_to_parent_msg(4,xv) ENDIF IF ( SIZE(grid%woodxy) .GT. 1 ) THEN xv(1)= intermediate_grid%woodxy(pig,pjg) CALL rsl_lite_to_parent_msg(4,xv) ENDIF IF ( SIZE(grid%stblcpxy) .GT. 1 ) THEN xv(1)= intermediate_grid%stblcpxy(pig,pjg) CALL rsl_lite_to_parent_msg(4,xv) ENDIF IF ( SIZE(grid%fastcpxy) .GT. 1 ) THEN xv(1)= intermediate_grid%fastcpxy(pig,pjg) CALL rsl_lite_to_parent_msg(4,xv) ENDIF IF ( SIZE(grid%xsaixy) .GT. 1 ) THEN xv(1)= intermediate_grid%xsaixy(pig,pjg) CALL rsl_lite_to_parent_msg(4,xv) ENDIF IF ( SIZE(grid%tradxy) .GT. 1 ) THEN xv(1)= intermediate_grid%tradxy(pig,pjg) CALL rsl_lite_to_parent_msg(4,xv) ENDIF IF ( SIZE(grid%tsxy) .GT. 1 ) THEN xv(1)= intermediate_grid%tsxy(pig,pjg) CALL rsl_lite_to_parent_msg(4,xv) ENDIF IF ( SIZE(grid%neexy) .GT. 1 ) THEN xv(1)= intermediate_grid%neexy(pig,pjg) CALL rsl_lite_to_parent_msg(4,xv) ENDIF IF ( SIZE(grid%gppxy) .GT. 1 ) THEN xv(1)= intermediate_grid%gppxy(pig,pjg) CALL rsl_lite_to_parent_msg(4,xv) ENDIF IF ( SIZE(grid%nppxy) .GT. 1 ) THEN xv(1)= intermediate_grid%nppxy(pig,pjg) CALL rsl_lite_to_parent_msg(4,xv) ENDIF IF ( SIZE(grid%fvegxy) .GT. 1 ) THEN xv(1)= intermediate_grid%fvegxy(pig,pjg) CALL rsl_lite_to_parent_msg(4,xv) ENDIF IF ( SIZE(grid%qinxy) .GT. 1 ) THEN xv(1)= intermediate_grid%qinxy(pig,pjg) CALL rsl_lite_to_parent_msg(4,xv) ENDIF IF ( SIZE(grid%runsfxy) .GT. 1 ) THEN xv(1)= intermediate_grid%runsfxy(pig,pjg) CALL rsl_lite_to_parent_msg(4,xv) ENDIF IF ( SIZE(grid%runsbxy) .GT. 1 ) THEN xv(1)= intermediate_grid%runsbxy(pig,pjg) CALL rsl_lite_to_parent_msg(4,xv) ENDIF IF ( SIZE(grid%ecanxy) .GT. 1 ) THEN xv(1)= intermediate_grid%ecanxy(pig,pjg) CALL rsl_lite_to_parent_msg(4,xv) ENDIF IF ( SIZE(grid%edirxy) .GT. 1 ) THEN xv(1)= intermediate_grid%edirxy(pig,pjg) CALL rsl_lite_to_parent_msg(4,xv) ENDIF IF ( SIZE(grid%etranxy) .GT. 1 ) THEN xv(1)= intermediate_grid%etranxy(pig,pjg) CALL rsl_lite_to_parent_msg(4,xv) ENDIF IF ( SIZE(grid%fsaxy) .GT. 1 ) THEN xv(1)= intermediate_grid%fsaxy(pig,pjg) CALL rsl_lite_to_parent_msg(4,xv) ENDIF IF ( SIZE(grid%firaxy) .GT. 1 ) THEN xv(1)= intermediate_grid%firaxy(pig,pjg) CALL rsl_lite_to_parent_msg(4,xv) ENDIF IF ( SIZE(grid%aparxy) .GT. 1 ) THEN xv(1)= intermediate_grid%aparxy(pig,pjg) CALL rsl_lite_to_parent_msg(4,xv) ENDIF IF ( SIZE(grid%psnxy) .GT. 1 ) THEN xv(1)= intermediate_grid%psnxy(pig,pjg) CALL rsl_lite_to_parent_msg(4,xv) ENDIF IF ( SIZE(grid%savxy) .GT. 1 ) THEN xv(1)= intermediate_grid%savxy(pig,pjg) CALL rsl_lite_to_parent_msg(4,xv) ENDIF IF ( SIZE(grid%sagxy) .GT. 1 ) THEN xv(1)= intermediate_grid%sagxy(pig,pjg) CALL rsl_lite_to_parent_msg(4,xv) ENDIF IF ( SIZE(grid%fsnoxy) .GT. 1 ) THEN xv(1)= intermediate_grid%fsnoxy(pig,pjg) CALL rsl_lite_to_parent_msg(4,xv) ENDIF IF ( SIZE(grid%t2mvxy) .GT. 1 ) THEN xv(1)= intermediate_grid%t2mvxy(pig,pjg) CALL rsl_lite_to_parent_msg(4,xv) ENDIF IF ( SIZE(grid%t2mbxy) .GT. 1 ) THEN xv(1)= intermediate_grid%t2mbxy(pig,pjg) CALL rsl_lite_to_parent_msg(4,xv) ENDIF IF ( SIZE(grid%q2mvxy) .GT. 1 ) THEN xv(1)= intermediate_grid%q2mvxy(pig,pjg) CALL rsl_lite_to_parent_msg(4,xv) ENDIF IF ( SIZE(grid%q2mbxy) .GT. 1 ) THEN xv(1)= intermediate_grid%q2mbxy(pig,pjg) CALL rsl_lite_to_parent_msg(4,xv) ENDIF IF ( SIZE(grid%chstarxy) .GT. 1 ) THEN xv(1)= intermediate_grid%chstarxy(pig,pjg) CALL rsl_lite_to_parent_msg(4,xv) ENDIF IF ( SIZE(grid%rssunxy) .GT. 1 ) THEN xv(1)= intermediate_grid%rssunxy(pig,pjg) CALL rsl_lite_to_parent_msg(4,xv) ENDIF IF ( SIZE(grid%rsshaxy) .GT. 1 ) THEN xv(1)= intermediate_grid%rsshaxy(pig,pjg) CALL rsl_lite_to_parent_msg(4,xv) ENDIF IF ( SIZE(grid%bgapxy) .GT. 1 ) THEN xv(1)= intermediate_grid%bgapxy(pig,pjg) CALL rsl_lite_to_parent_msg(4,xv) ENDIF IF ( SIZE(grid%wgapxy) .GT. 1 ) THEN xv(1)= intermediate_grid%wgapxy(pig,pjg) CALL rsl_lite_to_parent_msg(4,xv) ENDIF IF ( SIZE(grid%gapxy) .GT. 1 ) THEN xv(1)= intermediate_grid%gapxy(pig,pjg) CALL rsl_lite_to_parent_msg(4,xv) ENDIF IF ( SIZE(grid%tgvxy) .GT. 1 ) THEN xv(1)= intermediate_grid%tgvxy(pig,pjg) CALL rsl_lite_to_parent_msg(4,xv) ENDIF IF ( SIZE(grid%tgbxy) .GT. 1 ) THEN xv(1)= intermediate_grid%tgbxy(pig,pjg) CALL rsl_lite_to_parent_msg(4,xv) ENDIF IF ( SIZE(grid%chvxy) .GT. 1 ) THEN xv(1)= intermediate_grid%chvxy(pig,pjg) CALL rsl_lite_to_parent_msg(4,xv) ENDIF IF ( SIZE(grid%chbxy) .GT. 1 ) THEN xv(1)= intermediate_grid%chbxy(pig,pjg) CALL rsl_lite_to_parent_msg(4,xv) ENDIF IF ( SIZE(grid%tmn) .GT. 1 ) THEN xv(1)= intermediate_grid%tmn(pig,pjg) CALL rsl_lite_to_parent_msg(4,xv) ENDIF IF ( SIZE(grid%tyr) .GT. 1 ) THEN xv(1)= intermediate_grid%tyr(pig,pjg) CALL rsl_lite_to_parent_msg(4,xv) ENDIF IF ( SIZE(grid%tyra) .GT. 1 ) THEN xv(1)= intermediate_grid%tyra(pig,pjg) CALL rsl_lite_to_parent_msg(4,xv) ENDIF IF ( SIZE(grid%tdly) .GT. 1 ) THEN xv(1)= intermediate_grid%tdly(pig,pjg) CALL rsl_lite_to_parent_msg(4,xv) ENDIF IF ( SIZE(grid%tlag) .GT. 1 ) THEN DO k = 1,config_flags%lagday xv(k)= intermediate_grid%tlag(pig,k,pjg) ENDDO CALL rsl_lite_to_parent_msg(((config_flags%lagday)-(1)+1)*4,xv) ENDIF IF ( SIZE(grid%xland) .GT. 1 ) THEN xv(1)= intermediate_grid%xland(pig,pjg) CALL rsl_lite_to_parent_msg(4,xv) ENDIF IF ( SIZE(grid%achfx) .GT. 1 ) THEN xv(1)= intermediate_grid%achfx(pig,pjg) CALL rsl_lite_to_parent_msg(4,xv) ENDIF IF ( SIZE(grid%aclhf) .GT. 1 ) THEN xv(1)= intermediate_grid%aclhf(pig,pjg) CALL rsl_lite_to_parent_msg(4,xv) ENDIF IF ( SIZE(grid%snowc) .GT. 1 ) THEN xv(1)= intermediate_grid%snowc(pig,pjg) CALL rsl_lite_to_parent_msg(4,xv) ENDIF IF ( SIZE(grid%tml) .GT. 1 ) THEN xv(1)= intermediate_grid%tml(pig,pjg) CALL rsl_lite_to_parent_msg(4,xv) ENDIF IF ( SIZE(grid%t0ml) .GT. 1 ) THEN xv(1)= intermediate_grid%t0ml(pig,pjg) CALL rsl_lite_to_parent_msg(4,xv) ENDIF IF ( SIZE(grid%hml) .GT. 1 ) THEN xv(1)= intermediate_grid%hml(pig,pjg) CALL rsl_lite_to_parent_msg(4,xv) ENDIF IF ( SIZE(grid%h0ml) .GT. 1 ) THEN xv(1)= intermediate_grid%h0ml(pig,pjg) CALL rsl_lite_to_parent_msg(4,xv) ENDIF IF ( SIZE(grid%huml) .GT. 1 ) THEN xv(1)= intermediate_grid%huml(pig,pjg) CALL rsl_lite_to_parent_msg(4,xv) ENDIF IF ( SIZE(grid%hvml) .GT. 1 ) THEN xv(1)= intermediate_grid%hvml(pig,pjg) CALL rsl_lite_to_parent_msg(4,xv) ENDIF IF ( SIZE(grid%tmoml) .GT. 1 ) THEN xv(1)= intermediate_grid%tmoml(pig,pjg) CALL rsl_lite_to_parent_msg(4,xv) ENDIF IF ( SIZE(grid%landmask) .GT. 1 ) THEN xv(1)= intermediate_grid%landmask(pig,pjg) CALL rsl_lite_to_parent_msg(4,xv) ENDIF DO itrace = PARAM_FIRST_SCALAR, num_tracer DO k = ckds,(ckde-1) xv(k)= intermediate_grid%tracer(pig,k,pjg,itrace) ENDDO CALL rsl_lite_to_parent_msg((((ckde-1))-(ckds)+1)*4,xv) ENDDO CALL rsl_lite_to_parent_info( local_communicator, msize*4 & ,cips,cipe,cjps,cjpe & ,nids,nide,njds,njde & ,ntasks_x,ntasks_y & ,thisdomain_max_halo_width & ,icoord,jcoord & ,idim_cd,jdim_cd & ,pig,pjg,retval ) ENDDO CALL wrf_get_dm_communicator ( local_comm ) CALL wrf_get_myproc( myproc ) CALL wrf_get_nproc( nproc ) CALL rsl_lite_merge_msgs( myproc, nproc, local_comm ) CALL rsl_lite_from_child_info(pig,pjg,retval) DO while ( retval .eq. 1 ) IF ( SIZE(grid%lu_index) .GT. 1 ) THEN CALL rsl_lite_from_child_msg(4,xv) IF ( cd_feedback_mask( pig, ips_save, ipe_save , pjg, jps_save, jpe_save, .FALSE., .FALSE. ) ) THEN grid%lu_index(pig,pjg) = xv(1) ENDIF ENDIF IF ( SIZE(grid%u_2) .GT. 1 ) THEN CALL rsl_lite_from_child_msg((((ckde-1))-(ckds)+1)*4,xv) ; IF ( cd_feedback_mask( pig, ips_save, ipe_save , pjg, jps_save, jpe_save, .TRUE., .FALSE. ) ) THEN DO k = ckds,(ckde-1) grid%u_2(pig,k,pjg) = xv(k) ENDDO ENDIF ENDIF IF ( SIZE(grid%v_2) .GT. 1 ) THEN CALL rsl_lite_from_child_msg((((ckde-1))-(ckds)+1)*4,xv) ; IF ( cd_feedback_mask( pig, ips_save, ipe_save , pjg, jps_save, jpe_save, .FALSE., .TRUE. ) ) THEN DO k = ckds,(ckde-1) grid%v_2(pig,k,pjg) = xv(k) ENDDO ENDIF ENDIF IF ( SIZE(grid%w_2) .GT. 1 ) THEN CALL rsl_lite_from_child_msg(((ckde)-(ckds)+1)*4,xv) ; IF ( cd_feedback_mask( pig, ips_save, ipe_save , pjg, jps_save, jpe_save, .FALSE., .FALSE. ) ) THEN DO k = ckds,ckde grid%w_2(pig,k,pjg) = xv(k) ENDDO ENDIF ENDIF IF ( SIZE(grid%ph_2) .GT. 1 ) THEN CALL rsl_lite_from_child_msg(((ckde)-(ckds)+1)*4,xv) ; IF ( cd_feedback_mask( pig, ips_save, ipe_save , pjg, jps_save, jpe_save, .FALSE., .FALSE. ) ) THEN DO k = ckds,ckde grid%ph_2(pig,k,pjg) = xv(k) ENDDO ENDIF ENDIF IF ( SIZE(grid%phb) .GT. 1 ) THEN CALL rsl_lite_from_child_msg(((ckde)-(ckds)+1)*4,xv) ; IF ( cd_feedback_mask( pig, ips_save, ipe_save , pjg, jps_save, jpe_save, .FALSE., .FALSE. ) ) THEN DO k = ckds,ckde grid%phb(pig,k,pjg) = xv(k) ENDDO ENDIF ENDIF IF ( SIZE(grid%t_2) .GT. 1 ) THEN CALL rsl_lite_from_child_msg((((ckde-1))-(ckds)+1)*4,xv) ; IF ( cd_feedback_mask( pig, ips_save, ipe_save , pjg, jps_save, jpe_save, .FALSE., .FALSE. ) ) THEN DO k = ckds,(ckde-1) grid%t_2(pig,k,pjg) = xv(k) ENDDO ENDIF ENDIF IF ( SIZE(grid%mu_2) .GT. 1 ) THEN CALL rsl_lite_from_child_msg(4,xv) IF ( cd_feedback_mask( pig, ips_save, ipe_save , pjg, jps_save, jpe_save, .FALSE., .FALSE. ) ) THEN grid%mu_2(pig,pjg) = xv(1) ENDIF ENDIF IF ( SIZE(grid%mub) .GT. 1 ) THEN CALL rsl_lite_from_child_msg(4,xv) IF ( cd_feedback_mask( pig, ips_save, ipe_save , pjg, jps_save, jpe_save, .FALSE., .FALSE. ) ) THEN grid%mub(pig,pjg) = xv(1) ENDIF ENDIF IF ( SIZE(grid%nest_pos) .GT. 1 ) THEN CALL rsl_lite_from_child_msg(4,xv) IF ( cd_feedback_mask( pig, ips_save, ipe_save , pjg, jps_save, jpe_save, .FALSE., .FALSE. ) ) THEN grid%nest_pos(pig,pjg) = xv(1) ENDIF ENDIF IF ( SIZE(grid%nest_mask) .GT. 1 ) THEN CALL rsl_lite_from_child_msg(4,xv) IF ( cd_feedback_mask( pig, ips_save, ipe_save , pjg, jps_save, jpe_save, .FALSE., .FALSE. ) ) THEN grid%nest_mask(pig,pjg) = xv(1) ENDIF ENDIF IF ( SIZE(grid%alb) .GT. 1 ) THEN CALL rsl_lite_from_child_msg((((ckde-1))-(ckds)+1)*4,xv) ; IF ( cd_feedback_mask( pig, ips_save, ipe_save , pjg, jps_save, jpe_save, .FALSE., .FALSE. ) ) THEN DO k = ckds,(ckde-1) grid%alb(pig,k,pjg) = xv(k) ENDDO ENDIF ENDIF IF ( SIZE(grid%pb) .GT. 1 ) THEN CALL rsl_lite_from_child_msg((((ckde-1))-(ckds)+1)*4,xv) ; IF ( cd_feedback_mask( pig, ips_save, ipe_save , pjg, jps_save, jpe_save, .FALSE., .FALSE. ) ) THEN DO k = ckds,(ckde-1) grid%pb(pig,k,pjg) = xv(k) ENDDO ENDIF ENDIF DO itrace = PARAM_FIRST_SCALAR, num_moist CALL rsl_lite_from_child_msg((((ckde-1))-(ckds)+1)*4,xv) ; IF ( cd_feedback_mask( pig, ips_save, ipe_save , pjg, jps_save, jpe_save, .FALSE., .FALSE. ) ) THEN DO k = ckds,(ckde-1) moist(pig,k,pjg,itrace) = xv(k) ENDDO ENDIF ENDDO DO itrace = PARAM_FIRST_SCALAR, num_dfi_moist CALL rsl_lite_from_child_msg((((ckde-1))-(ckds)+1)*4,xv) ; IF ( cd_feedback_mask( pig, ips_save, ipe_save , pjg, jps_save, jpe_save, .FALSE., .FALSE. ) ) THEN DO k = ckds,(ckde-1) dfi_moist(pig,k,pjg,itrace) = xv(k) ENDDO ENDIF ENDDO DO itrace = PARAM_FIRST_SCALAR, num_scalar CALL rsl_lite_from_child_msg((((ckde-1))-(ckds)+1)*4,xv) ; IF ( cd_feedback_mask( pig, ips_save, ipe_save , pjg, jps_save, jpe_save, .FALSE., .FALSE. ) ) THEN DO k = ckds,(ckde-1) scalar(pig,k,pjg,itrace) = xv(k) ENDDO ENDIF ENDDO DO itrace = PARAM_FIRST_SCALAR, num_dfi_scalar CALL rsl_lite_from_child_msg((((ckde-1))-(ckds)+1)*4,xv) ; IF ( cd_feedback_mask( pig, ips_save, ipe_save , pjg, jps_save, jpe_save, .FALSE., .FALSE. ) ) THEN DO k = ckds,(ckde-1) dfi_scalar(pig,k,pjg,itrace) = xv(k) ENDDO ENDIF ENDDO IF ( SIZE(grid%toposlpx) .GT. 1 ) THEN CALL rsl_lite_from_child_msg(4,xv) IF ( cd_feedback_mask( pig, ips_save, ipe_save , pjg, jps_save, jpe_save, .FALSE., .FALSE. ) ) THEN grid%toposlpx(pig,pjg) = xv(1) ENDIF ENDIF IF ( SIZE(grid%toposlpy) .GT. 1 ) THEN CALL rsl_lite_from_child_msg(4,xv) IF ( cd_feedback_mask( pig, ips_save, ipe_save , pjg, jps_save, jpe_save, .FALSE., .FALSE. ) ) THEN grid%toposlpy(pig,pjg) = xv(1) ENDIF ENDIF IF ( SIZE(grid%slope) .GT. 1 ) THEN CALL rsl_lite_from_child_msg(4,xv) IF ( cd_feedback_mask( pig, ips_save, ipe_save , pjg, jps_save, jpe_save, .FALSE., .FALSE. ) ) THEN grid%slope(pig,pjg) = xv(1) ENDIF ENDIF IF ( SIZE(grid%slp_azi) .GT. 1 ) THEN CALL rsl_lite_from_child_msg(4,xv) IF ( cd_feedback_mask( pig, ips_save, ipe_save , pjg, jps_save, jpe_save, .FALSE., .FALSE. ) ) THEN grid%slp_azi(pig,pjg) = xv(1) ENDIF ENDIF IF ( SIZE(grid%shdmax) .GT. 1 ) THEN CALL rsl_lite_from_child_msg(4,xv) IF ( cd_feedback_mask( pig, ips_save, ipe_save , pjg, jps_save, jpe_save, .FALSE., .FALSE. ) ) THEN grid%shdmax(pig,pjg) = xv(1) ENDIF ENDIF IF ( SIZE(grid%shdmin) .GT. 1 ) THEN CALL rsl_lite_from_child_msg(4,xv) IF ( cd_feedback_mask( pig, ips_save, ipe_save , pjg, jps_save, jpe_save, .FALSE., .FALSE. ) ) THEN grid%shdmin(pig,pjg) = xv(1) ENDIF ENDIF IF ( SIZE(grid%tslb) .GT. 1 ) THEN CALL rsl_lite_from_child_msg(((config_flags%num_soil_layers)-(1)+1)*4,xv) ; IF ( cd_feedback_mask( pig, ips_save, ipe_save , pjg, jps_save, jpe_save, .FALSE., .FALSE. ) ) THEN DO k = 1,config_flags%num_soil_layers grid%tslb(pig,k,pjg) = xv(k) ENDDO ENDIF ENDIF IF ( SIZE(grid%smois) .GT. 1 ) THEN CALL rsl_lite_from_child_msg(((config_flags%num_soil_layers)-(1)+1)*4,xv) ; IF ( cd_feedback_mask( pig, ips_save, ipe_save , pjg, jps_save, jpe_save, .FALSE., .FALSE. ) ) THEN DO k = 1,config_flags%num_soil_layers grid%smois(pig,k,pjg) = xv(k) ENDDO ENDIF ENDIF IF ( SIZE(grid%sh2o) .GT. 1 ) THEN CALL rsl_lite_from_child_msg(((config_flags%num_soil_layers)-(1)+1)*4,xv) ; IF ( cd_feedback_mask( pig, ips_save, ipe_save , pjg, jps_save, jpe_save, .FALSE., .FALSE. ) ) THEN DO k = 1,config_flags%num_soil_layers grid%sh2o(pig,k,pjg) = xv(k) ENDDO ENDIF ENDIF IF ( SIZE(grid%smcrel) .GT. 1 ) THEN CALL rsl_lite_from_child_msg(((config_flags%num_soil_layers)-(1)+1)*4,xv) ; IF ( cd_feedback_mask( pig, ips_save, ipe_save , pjg, jps_save, jpe_save, .FALSE., .FALSE. ) ) THEN DO k = 1,config_flags%num_soil_layers grid%smcrel(pig,k,pjg) = xv(k) ENDDO ENDIF ENDIF IF ( SIZE(grid%xice) .GT. 1 ) THEN CALL rsl_lite_from_child_msg(4,xv) IF ( cd_feedback_mask( pig, ips_save, ipe_save , pjg, jps_save, jpe_save, .FALSE., .FALSE. ) ) THEN grid%xice(pig,pjg) = xv(1) ENDIF ENDIF IF ( SIZE(grid%xicem) .GT. 1 ) THEN CALL rsl_lite_from_child_msg(4,xv) IF ( cd_feedback_mask( pig, ips_save, ipe_save , pjg, jps_save, jpe_save, .FALSE., .FALSE. ) ) THEN grid%xicem(pig,pjg) = xv(1) ENDIF ENDIF IF ( SIZE(grid%ivgtyp) .GT. 1 ) THEN CALL rsl_lite_from_child_msg(4,xv) IF ( cd_feedback_mask( pig, ips_save, ipe_save , pjg, jps_save, jpe_save, .FALSE., .FALSE. ) ) THEN grid%ivgtyp(pig,pjg) = xv(1) ENDIF ENDIF IF ( SIZE(grid%isltyp) .GT. 1 ) THEN CALL rsl_lite_from_child_msg(4,xv) IF ( cd_feedback_mask( pig, ips_save, ipe_save , pjg, jps_save, jpe_save, .FALSE., .FALSE. ) ) THEN grid%isltyp(pig,pjg) = xv(1) ENDIF ENDIF IF ( SIZE(grid%vegfra) .GT. 1 ) THEN CALL rsl_lite_from_child_msg(4,xv) IF ( cd_feedback_mask( pig, ips_save, ipe_save , pjg, jps_save, jpe_save, .FALSE., .FALSE. ) ) THEN grid%vegfra(pig,pjg) = xv(1) ENDIF ENDIF IF ( SIZE(grid%acgrdflx) .GT. 1 ) THEN CALL rsl_lite_from_child_msg(4,xv) IF ( cd_feedback_mask( pig, ips_save, ipe_save , pjg, jps_save, jpe_save, .FALSE., .FALSE. ) ) THEN grid%acgrdflx(pig,pjg) = xv(1) ENDIF ENDIF IF ( SIZE(grid%acsnow) .GT. 1 ) THEN CALL rsl_lite_from_child_msg(4,xv) IF ( cd_feedback_mask( pig, ips_save, ipe_save , pjg, jps_save, jpe_save, .FALSE., .FALSE. ) ) THEN grid%acsnow(pig,pjg) = xv(1) ENDIF ENDIF IF ( SIZE(grid%acsnom) .GT. 1 ) THEN CALL rsl_lite_from_child_msg(4,xv) IF ( cd_feedback_mask( pig, ips_save, ipe_save , pjg, jps_save, jpe_save, .FALSE., .FALSE. ) ) THEN grid%acsnom(pig,pjg) = xv(1) ENDIF ENDIF IF ( SIZE(grid%snow) .GT. 1 ) THEN CALL rsl_lite_from_child_msg(4,xv) IF ( cd_feedback_mask( pig, ips_save, ipe_save , pjg, jps_save, jpe_save, .FALSE., .FALSE. ) ) THEN grid%snow(pig,pjg) = xv(1) ENDIF ENDIF IF ( SIZE(grid%snowh) .GT. 1 ) THEN CALL rsl_lite_from_child_msg(4,xv) IF ( cd_feedback_mask( pig, ips_save, ipe_save , pjg, jps_save, jpe_save, .FALSE., .FALSE. ) ) THEN grid%snowh(pig,pjg) = xv(1) ENDIF ENDIF IF ( SIZE(grid%canwat) .GT. 1 ) THEN CALL rsl_lite_from_child_msg(4,xv) IF ( cd_feedback_mask( pig, ips_save, ipe_save , pjg, jps_save, jpe_save, .FALSE., .FALSE. ) ) THEN grid%canwat(pig,pjg) = xv(1) ENDIF ENDIF IF ( SIZE(grid%tr_urb2d) .GT. 1 ) THEN CALL rsl_lite_from_child_msg(4,xv) IF ( cd_feedback_mask( pig, ips_save, ipe_save , pjg, jps_save, jpe_save, .FALSE., .FALSE. ) ) THEN grid%tr_urb2d(pig,pjg) = xv(1) ENDIF ENDIF IF ( SIZE(grid%tb_urb2d) .GT. 1 ) THEN CALL rsl_lite_from_child_msg(4,xv) IF ( cd_feedback_mask( pig, ips_save, ipe_save , pjg, jps_save, jpe_save, .FALSE., .FALSE. ) ) THEN grid%tb_urb2d(pig,pjg) = xv(1) ENDIF ENDIF IF ( SIZE(grid%tg_urb2d) .GT. 1 ) THEN CALL rsl_lite_from_child_msg(4,xv) IF ( cd_feedback_mask( pig, ips_save, ipe_save , pjg, jps_save, jpe_save, .FALSE., .FALSE. ) ) THEN grid%tg_urb2d(pig,pjg) = xv(1) ENDIF ENDIF IF ( SIZE(grid%tc_urb2d) .GT. 1 ) THEN CALL rsl_lite_from_child_msg(4,xv) IF ( cd_feedback_mask( pig, ips_save, ipe_save , pjg, jps_save, jpe_save, .FALSE., .FALSE. ) ) THEN grid%tc_urb2d(pig,pjg) = xv(1) ENDIF ENDIF IF ( SIZE(grid%qc_urb2d) .GT. 1 ) THEN CALL rsl_lite_from_child_msg(4,xv) IF ( cd_feedback_mask( pig, ips_save, ipe_save , pjg, jps_save, jpe_save, .FALSE., .FALSE. ) ) THEN grid%qc_urb2d(pig,pjg) = xv(1) ENDIF ENDIF IF ( SIZE(grid%uc_urb2d) .GT. 1 ) THEN CALL rsl_lite_from_child_msg(4,xv) IF ( cd_feedback_mask( pig, ips_save, ipe_save , pjg, jps_save, jpe_save, .FALSE., .FALSE. ) ) THEN grid%uc_urb2d(pig,pjg) = xv(1) ENDIF ENDIF IF ( SIZE(grid%xxxr_urb2d) .GT. 1 ) THEN CALL rsl_lite_from_child_msg(4,xv) IF ( cd_feedback_mask( pig, ips_save, ipe_save , pjg, jps_save, jpe_save, .FALSE., .FALSE. ) ) THEN grid%xxxr_urb2d(pig,pjg) = xv(1) ENDIF ENDIF IF ( SIZE(grid%xxxb_urb2d) .GT. 1 ) THEN CALL rsl_lite_from_child_msg(4,xv) IF ( cd_feedback_mask( pig, ips_save, ipe_save , pjg, jps_save, jpe_save, .FALSE., .FALSE. ) ) THEN grid%xxxb_urb2d(pig,pjg) = xv(1) ENDIF ENDIF IF ( SIZE(grid%xxxg_urb2d) .GT. 1 ) THEN CALL rsl_lite_from_child_msg(4,xv) IF ( cd_feedback_mask( pig, ips_save, ipe_save , pjg, jps_save, jpe_save, .FALSE., .FALSE. ) ) THEN grid%xxxg_urb2d(pig,pjg) = xv(1) ENDIF ENDIF IF ( SIZE(grid%xxxc_urb2d) .GT. 1 ) THEN CALL rsl_lite_from_child_msg(4,xv) IF ( cd_feedback_mask( pig, ips_save, ipe_save , pjg, jps_save, jpe_save, .FALSE., .FALSE. ) ) THEN grid%xxxc_urb2d(pig,pjg) = xv(1) ENDIF ENDIF IF ( SIZE(grid%trl_urb3d) .GT. 1 ) THEN CALL rsl_lite_from_child_msg(((config_flags%num_soil_layers)-(1)+1)*4,xv) ; IF ( cd_feedback_mask( pig, ips_save, ipe_save , pjg, jps_save, jpe_save, .FALSE., .FALSE. ) ) THEN DO k = 1,config_flags%num_soil_layers grid%trl_urb3d(pig,k,pjg) = xv(k) ENDDO ENDIF ENDIF IF ( SIZE(grid%tbl_urb3d) .GT. 1 ) THEN CALL rsl_lite_from_child_msg(((config_flags%num_soil_layers)-(1)+1)*4,xv) ; IF ( cd_feedback_mask( pig, ips_save, ipe_save , pjg, jps_save, jpe_save, .FALSE., .FALSE. ) ) THEN DO k = 1,config_flags%num_soil_layers grid%tbl_urb3d(pig,k,pjg) = xv(k) ENDDO ENDIF ENDIF IF ( SIZE(grid%tgl_urb3d) .GT. 1 ) THEN CALL rsl_lite_from_child_msg(((config_flags%num_soil_layers)-(1)+1)*4,xv) ; IF ( cd_feedback_mask( pig, ips_save, ipe_save , pjg, jps_save, jpe_save, .FALSE., .FALSE. ) ) THEN DO k = 1,config_flags%num_soil_layers grid%tgl_urb3d(pig,k,pjg) = xv(k) ENDDO ENDIF ENDIF IF ( SIZE(grid%frc_urb2d) .GT. 1 ) THEN CALL rsl_lite_from_child_msg(4,xv) IF ( cd_feedback_mask( pig, ips_save, ipe_save , pjg, jps_save, jpe_save, .FALSE., .FALSE. ) ) THEN grid%frc_urb2d(pig,pjg) = xv(1) ENDIF ENDIF IF ( SIZE(grid%utype_urb2d) .GT. 1 ) THEN CALL rsl_lite_from_child_msg(4,xv) IF ( cd_feedback_mask( pig, ips_save, ipe_save , pjg, jps_save, jpe_save, .FALSE., .FALSE. ) ) THEN grid%utype_urb2d(pig,pjg) = xv(1) ENDIF ENDIF IF ( SIZE(grid%var2d) .GT. 1 ) THEN CALL rsl_lite_from_child_msg(4,xv) IF ( cd_feedback_mask( pig, ips_save, ipe_save , pjg, jps_save, jpe_save, .FALSE., .FALSE. ) ) THEN grid%var2d(pig,pjg) = xv(1) ENDIF ENDIF IF ( SIZE(grid%oc12d) .GT. 1 ) THEN CALL rsl_lite_from_child_msg(4,xv) IF ( cd_feedback_mask( pig, ips_save, ipe_save , pjg, jps_save, jpe_save, .FALSE., .FALSE. ) ) THEN grid%oc12d(pig,pjg) = xv(1) ENDIF ENDIF IF ( SIZE(grid%oa1) .GT. 1 ) THEN CALL rsl_lite_from_child_msg(4,xv) IF ( cd_feedback_mask( pig, ips_save, ipe_save , pjg, jps_save, jpe_save, .FALSE., .FALSE. ) ) THEN grid%oa1(pig,pjg) = xv(1) ENDIF ENDIF IF ( SIZE(grid%oa2) .GT. 1 ) THEN CALL rsl_lite_from_child_msg(4,xv) IF ( cd_feedback_mask( pig, ips_save, ipe_save , pjg, jps_save, jpe_save, .FALSE., .FALSE. ) ) THEN grid%oa2(pig,pjg) = xv(1) ENDIF ENDIF IF ( SIZE(grid%oa3) .GT. 1 ) THEN CALL rsl_lite_from_child_msg(4,xv) IF ( cd_feedback_mask( pig, ips_save, ipe_save , pjg, jps_save, jpe_save, .FALSE., .FALSE. ) ) THEN grid%oa3(pig,pjg) = xv(1) ENDIF ENDIF IF ( SIZE(grid%oa4) .GT. 1 ) THEN CALL rsl_lite_from_child_msg(4,xv) IF ( cd_feedback_mask( pig, ips_save, ipe_save , pjg, jps_save, jpe_save, .FALSE., .FALSE. ) ) THEN grid%oa4(pig,pjg) = xv(1) ENDIF ENDIF IF ( SIZE(grid%ol1) .GT. 1 ) THEN CALL rsl_lite_from_child_msg(4,xv) IF ( cd_feedback_mask( pig, ips_save, ipe_save , pjg, jps_save, jpe_save, .FALSE., .FALSE. ) ) THEN grid%ol1(pig,pjg) = xv(1) ENDIF ENDIF IF ( SIZE(grid%ol2) .GT. 1 ) THEN CALL rsl_lite_from_child_msg(4,xv) IF ( cd_feedback_mask( pig, ips_save, ipe_save , pjg, jps_save, jpe_save, .FALSE., .FALSE. ) ) THEN grid%ol2(pig,pjg) = xv(1) ENDIF ENDIF IF ( SIZE(grid%ol3) .GT. 1 ) THEN CALL rsl_lite_from_child_msg(4,xv) IF ( cd_feedback_mask( pig, ips_save, ipe_save , pjg, jps_save, jpe_save, .FALSE., .FALSE. ) ) THEN grid%ol3(pig,pjg) = xv(1) ENDIF ENDIF IF ( SIZE(grid%ol4) .GT. 1 ) THEN CALL rsl_lite_from_child_msg(4,xv) IF ( cd_feedback_mask( pig, ips_save, ipe_save , pjg, jps_save, jpe_save, .FALSE., .FALSE. ) ) THEN grid%ol4(pig,pjg) = xv(1) ENDIF ENDIF IF ( SIZE(grid%f_ice_phy) .GT. 1 ) THEN CALL rsl_lite_from_child_msg((((ckde-1))-(ckds)+1)*4,xv) ; IF ( cd_feedback_mask( pig, ips_save, ipe_save , pjg, jps_save, jpe_save, .FALSE., .FALSE. ) ) THEN DO k = ckds,(ckde-1) grid%f_ice_phy(pig,k,pjg) = xv(k) ENDDO ENDIF ENDIF IF ( SIZE(grid%f_rain_phy) .GT. 1 ) THEN CALL rsl_lite_from_child_msg((((ckde-1))-(ckds)+1)*4,xv) ; IF ( cd_feedback_mask( pig, ips_save, ipe_save , pjg, jps_save, jpe_save, .FALSE., .FALSE. ) ) THEN DO k = ckds,(ckde-1) grid%f_rain_phy(pig,k,pjg) = xv(k) ENDDO ENDIF ENDIF IF ( SIZE(grid%f_rimef_phy) .GT. 1 ) THEN CALL rsl_lite_from_child_msg((((ckde-1))-(ckds)+1)*4,xv) ; IF ( cd_feedback_mask( pig, ips_save, ipe_save , pjg, jps_save, jpe_save, .FALSE., .FALSE. ) ) THEN DO k = ckds,(ckde-1) grid%f_rimef_phy(pig,k,pjg) = xv(k) ENDDO ENDIF ENDIF IF ( SIZE(grid%h_diabatic) .GT. 1 ) THEN CALL rsl_lite_from_child_msg((((ckde-1))-(ckds)+1)*4,xv) ; IF ( cd_feedback_mask( pig, ips_save, ipe_save , pjg, jps_save, jpe_save, .FALSE., .FALSE. ) ) THEN DO k = ckds,(ckde-1) grid%h_diabatic(pig,k,pjg) = xv(k) ENDDO ENDIF ENDIF IF ( SIZE(grid%msft) .GT. 1 ) THEN CALL rsl_lite_from_child_msg(4,xv) IF ( cd_feedback_mask( pig, ips_save, ipe_save , pjg, jps_save, jpe_save, .FALSE., .FALSE. ) ) THEN grid%msft(pig,pjg) = xv(1) ENDIF ENDIF IF ( SIZE(grid%msfu) .GT. 1 ) THEN CALL rsl_lite_from_child_msg(4,xv) IF ( cd_feedback_mask( pig, ips_save, ipe_save , pjg, jps_save, jpe_save, .TRUE., .FALSE. ) ) THEN grid%msfu(pig,pjg) = xv(1) ENDIF ENDIF IF ( SIZE(grid%msfv) .GT. 1 ) THEN CALL rsl_lite_from_child_msg(4,xv) IF ( cd_feedback_mask( pig, ips_save, ipe_save , pjg, jps_save, jpe_save, .FALSE., .TRUE. ) ) THEN grid%msfv(pig,pjg) = xv(1) ENDIF ENDIF IF ( SIZE(grid%msftx) .GT. 1 ) THEN CALL rsl_lite_from_child_msg(4,xv) IF ( cd_feedback_mask( pig, ips_save, ipe_save , pjg, jps_save, jpe_save, .FALSE., .FALSE. ) ) THEN grid%msftx(pig,pjg) = xv(1) ENDIF ENDIF IF ( SIZE(grid%msfty) .GT. 1 ) THEN CALL rsl_lite_from_child_msg(4,xv) IF ( cd_feedback_mask( pig, ips_save, ipe_save , pjg, jps_save, jpe_save, .FALSE., .FALSE. ) ) THEN grid%msfty(pig,pjg) = xv(1) ENDIF ENDIF IF ( SIZE(grid%msfux) .GT. 1 ) THEN CALL rsl_lite_from_child_msg(4,xv) IF ( cd_feedback_mask( pig, ips_save, ipe_save , pjg, jps_save, jpe_save, .TRUE., .FALSE. ) ) THEN grid%msfux(pig,pjg) = xv(1) ENDIF ENDIF IF ( SIZE(grid%msfuy) .GT. 1 ) THEN CALL rsl_lite_from_child_msg(4,xv) IF ( cd_feedback_mask( pig, ips_save, ipe_save , pjg, jps_save, jpe_save, .TRUE., .FALSE. ) ) THEN grid%msfuy(pig,pjg) = xv(1) ENDIF ENDIF IF ( SIZE(grid%msfvx) .GT. 1 ) THEN CALL rsl_lite_from_child_msg(4,xv) IF ( cd_feedback_mask( pig, ips_save, ipe_save , pjg, jps_save, jpe_save, .FALSE., .TRUE. ) ) THEN grid%msfvx(pig,pjg) = xv(1) ENDIF ENDIF IF ( SIZE(grid%msfvx_inv) .GT. 1 ) THEN CALL rsl_lite_from_child_msg(4,xv) IF ( cd_feedback_mask( pig, ips_save, ipe_save , pjg, jps_save, jpe_save, .FALSE., .TRUE. ) ) THEN grid%msfvx_inv(pig,pjg) = xv(1) ENDIF ENDIF IF ( SIZE(grid%msfvy) .GT. 1 ) THEN CALL rsl_lite_from_child_msg(4,xv) IF ( cd_feedback_mask( pig, ips_save, ipe_save , pjg, jps_save, jpe_save, .FALSE., .TRUE. ) ) THEN grid%msfvy(pig,pjg) = xv(1) ENDIF ENDIF IF ( SIZE(grid%f) .GT. 1 ) THEN CALL rsl_lite_from_child_msg(4,xv) IF ( cd_feedback_mask( pig, ips_save, ipe_save , pjg, jps_save, jpe_save, .FALSE., .FALSE. ) ) THEN grid%f(pig,pjg) = xv(1) ENDIF ENDIF IF ( SIZE(grid%e) .GT. 1 ) THEN CALL rsl_lite_from_child_msg(4,xv) IF ( cd_feedback_mask( pig, ips_save, ipe_save , pjg, jps_save, jpe_save, .FALSE., .FALSE. ) ) THEN grid%e(pig,pjg) = xv(1) ENDIF ENDIF IF ( SIZE(grid%sina) .GT. 1 ) THEN CALL rsl_lite_from_child_msg(4,xv) IF ( cd_feedback_mask( pig, ips_save, ipe_save , pjg, jps_save, jpe_save, .FALSE., .FALSE. ) ) THEN grid%sina(pig,pjg) = xv(1) ENDIF ENDIF IF ( SIZE(grid%cosa) .GT. 1 ) THEN CALL rsl_lite_from_child_msg(4,xv) IF ( cd_feedback_mask( pig, ips_save, ipe_save , pjg, jps_save, jpe_save, .FALSE., .FALSE. ) ) THEN grid%cosa(pig,pjg) = xv(1) ENDIF ENDIF IF ( SIZE(grid%ht) .GT. 1 ) THEN CALL rsl_lite_from_child_msg(4,xv) IF ( cd_feedback_mask( pig, ips_save, ipe_save , pjg, jps_save, jpe_save, .FALSE., .FALSE. ) ) THEN grid%ht(pig,pjg) = xv(1) ENDIF ENDIF IF ( SIZE(grid%tsk) .GT. 1 ) THEN CALL rsl_lite_from_child_msg(4,xv) IF ( cd_feedback_mask( pig, ips_save, ipe_save , pjg, jps_save, jpe_save, .FALSE., .FALSE. ) ) THEN grid%tsk(pig,pjg) = xv(1) ENDIF ENDIF IF ( SIZE(grid%rainc) .GT. 1 ) THEN CALL rsl_lite_from_child_msg(4,xv) IF ( cd_feedback_mask( pig, ips_save, ipe_save , pjg, jps_save, jpe_save, .FALSE., .FALSE. ) ) THEN grid%rainc(pig,pjg) = xv(1) ENDIF ENDIF IF ( SIZE(grid%rainsh) .GT. 1 ) THEN CALL rsl_lite_from_child_msg(4,xv) IF ( cd_feedback_mask( pig, ips_save, ipe_save , pjg, jps_save, jpe_save, .FALSE., .FALSE. ) ) THEN grid%rainsh(pig,pjg) = xv(1) ENDIF ENDIF IF ( SIZE(grid%rainnc) .GT. 1 ) THEN CALL rsl_lite_from_child_msg(4,xv) IF ( cd_feedback_mask( pig, ips_save, ipe_save , pjg, jps_save, jpe_save, .FALSE., .FALSE. ) ) THEN grid%rainnc(pig,pjg) = xv(1) ENDIF ENDIF IF ( SIZE(grid%i_rainc) .GT. 1 ) THEN CALL rsl_lite_from_child_msg(4,xv) IF ( cd_feedback_mask( pig, ips_save, ipe_save , pjg, jps_save, jpe_save, .FALSE., .FALSE. ) ) THEN grid%i_rainc(pig,pjg) = xv(1) ENDIF ENDIF IF ( SIZE(grid%i_rainnc) .GT. 1 ) THEN CALL rsl_lite_from_child_msg(4,xv) IF ( cd_feedback_mask( pig, ips_save, ipe_save , pjg, jps_save, jpe_save, .FALSE., .FALSE. ) ) THEN grid%i_rainnc(pig,pjg) = xv(1) ENDIF ENDIF IF ( SIZE(grid%snownc) .GT. 1 ) THEN CALL rsl_lite_from_child_msg(4,xv) IF ( cd_feedback_mask( pig, ips_save, ipe_save , pjg, jps_save, jpe_save, .FALSE., .FALSE. ) ) THEN grid%snownc(pig,pjg) = xv(1) ENDIF ENDIF IF ( SIZE(grid%graupelnc) .GT. 1 ) THEN CALL rsl_lite_from_child_msg(4,xv) IF ( cd_feedback_mask( pig, ips_save, ipe_save , pjg, jps_save, jpe_save, .FALSE., .FALSE. ) ) THEN grid%graupelnc(pig,pjg) = xv(1) ENDIF ENDIF IF ( SIZE(grid%hailnc) .GT. 1 ) THEN CALL rsl_lite_from_child_msg(4,xv) IF ( cd_feedback_mask( pig, ips_save, ipe_save , pjg, jps_save, jpe_save, .FALSE., .FALSE. ) ) THEN grid%hailnc(pig,pjg) = xv(1) ENDIF ENDIF IF ( SIZE(grid%refl_10cm) .GT. 1 ) THEN CALL rsl_lite_from_child_msg((((ckde-1))-(ckds)+1)*4,xv) ; IF ( cd_feedback_mask( pig, ips_save, ipe_save , pjg, jps_save, jpe_save, .FALSE., .FALSE. ) ) THEN DO k = ckds,(ckde-1) grid%refl_10cm(pig,k,pjg) = xv(k) ENDDO ENDIF ENDIF IF ( SIZE(grid%acswupt) .GT. 1 ) THEN CALL rsl_lite_from_child_msg(4,xv) IF ( cd_feedback_mask( pig, ips_save, ipe_save , pjg, jps_save, jpe_save, .FALSE., .FALSE. ) ) THEN grid%acswupt(pig,pjg) = xv(1) ENDIF ENDIF IF ( SIZE(grid%acswuptc) .GT. 1 ) THEN CALL rsl_lite_from_child_msg(4,xv) IF ( cd_feedback_mask( pig, ips_save, ipe_save , pjg, jps_save, jpe_save, .FALSE., .FALSE. ) ) THEN grid%acswuptc(pig,pjg) = xv(1) ENDIF ENDIF IF ( SIZE(grid%acswdnt) .GT. 1 ) THEN CALL rsl_lite_from_child_msg(4,xv) IF ( cd_feedback_mask( pig, ips_save, ipe_save , pjg, jps_save, jpe_save, .FALSE., .FALSE. ) ) THEN grid%acswdnt(pig,pjg) = xv(1) ENDIF ENDIF IF ( SIZE(grid%acswdntc) .GT. 1 ) THEN CALL rsl_lite_from_child_msg(4,xv) IF ( cd_feedback_mask( pig, ips_save, ipe_save , pjg, jps_save, jpe_save, .FALSE., .FALSE. ) ) THEN grid%acswdntc(pig,pjg) = xv(1) ENDIF ENDIF IF ( SIZE(grid%acswupb) .GT. 1 ) THEN CALL rsl_lite_from_child_msg(4,xv) IF ( cd_feedback_mask( pig, ips_save, ipe_save , pjg, jps_save, jpe_save, .FALSE., .FALSE. ) ) THEN grid%acswupb(pig,pjg) = xv(1) ENDIF ENDIF IF ( SIZE(grid%acswupbc) .GT. 1 ) THEN CALL rsl_lite_from_child_msg(4,xv) IF ( cd_feedback_mask( pig, ips_save, ipe_save , pjg, jps_save, jpe_save, .FALSE., .FALSE. ) ) THEN grid%acswupbc(pig,pjg) = xv(1) ENDIF ENDIF IF ( SIZE(grid%acswdnb) .GT. 1 ) THEN CALL rsl_lite_from_child_msg(4,xv) IF ( cd_feedback_mask( pig, ips_save, ipe_save , pjg, jps_save, jpe_save, .FALSE., .FALSE. ) ) THEN grid%acswdnb(pig,pjg) = xv(1) ENDIF ENDIF IF ( SIZE(grid%acswdnbc) .GT. 1 ) THEN CALL rsl_lite_from_child_msg(4,xv) IF ( cd_feedback_mask( pig, ips_save, ipe_save , pjg, jps_save, jpe_save, .FALSE., .FALSE. ) ) THEN grid%acswdnbc(pig,pjg) = xv(1) ENDIF ENDIF IF ( SIZE(grid%aclwupt) .GT. 1 ) THEN CALL rsl_lite_from_child_msg(4,xv) IF ( cd_feedback_mask( pig, ips_save, ipe_save , pjg, jps_save, jpe_save, .FALSE., .FALSE. ) ) THEN grid%aclwupt(pig,pjg) = xv(1) ENDIF ENDIF IF ( SIZE(grid%aclwuptc) .GT. 1 ) THEN CALL rsl_lite_from_child_msg(4,xv) IF ( cd_feedback_mask( pig, ips_save, ipe_save , pjg, jps_save, jpe_save, .FALSE., .FALSE. ) ) THEN grid%aclwuptc(pig,pjg) = xv(1) ENDIF ENDIF IF ( SIZE(grid%aclwdnt) .GT. 1 ) THEN CALL rsl_lite_from_child_msg(4,xv) IF ( cd_feedback_mask( pig, ips_save, ipe_save , pjg, jps_save, jpe_save, .FALSE., .FALSE. ) ) THEN grid%aclwdnt(pig,pjg) = xv(1) ENDIF ENDIF IF ( SIZE(grid%aclwdntc) .GT. 1 ) THEN CALL rsl_lite_from_child_msg(4,xv) IF ( cd_feedback_mask( pig, ips_save, ipe_save , pjg, jps_save, jpe_save, .FALSE., .FALSE. ) ) THEN grid%aclwdntc(pig,pjg) = xv(1) ENDIF ENDIF IF ( SIZE(grid%aclwupb) .GT. 1 ) THEN CALL rsl_lite_from_child_msg(4,xv) IF ( cd_feedback_mask( pig, ips_save, ipe_save , pjg, jps_save, jpe_save, .FALSE., .FALSE. ) ) THEN grid%aclwupb(pig,pjg) = xv(1) ENDIF ENDIF IF ( SIZE(grid%aclwupbc) .GT. 1 ) THEN CALL rsl_lite_from_child_msg(4,xv) IF ( cd_feedback_mask( pig, ips_save, ipe_save , pjg, jps_save, jpe_save, .FALSE., .FALSE. ) ) THEN grid%aclwupbc(pig,pjg) = xv(1) ENDIF ENDIF IF ( SIZE(grid%aclwdnb) .GT. 1 ) THEN CALL rsl_lite_from_child_msg(4,xv) IF ( cd_feedback_mask( pig, ips_save, ipe_save , pjg, jps_save, jpe_save, .FALSE., .FALSE. ) ) THEN grid%aclwdnb(pig,pjg) = xv(1) ENDIF ENDIF IF ( SIZE(grid%aclwdnbc) .GT. 1 ) THEN CALL rsl_lite_from_child_msg(4,xv) IF ( cd_feedback_mask( pig, ips_save, ipe_save , pjg, jps_save, jpe_save, .FALSE., .FALSE. ) ) THEN grid%aclwdnbc(pig,pjg) = xv(1) ENDIF ENDIF IF ( SIZE(grid%i_acswupt) .GT. 1 ) THEN CALL rsl_lite_from_child_msg(4,xv) IF ( cd_feedback_mask( pig, ips_save, ipe_save , pjg, jps_save, jpe_save, .FALSE., .FALSE. ) ) THEN grid%i_acswupt(pig,pjg) = xv(1) ENDIF ENDIF IF ( SIZE(grid%i_acswuptc) .GT. 1 ) THEN CALL rsl_lite_from_child_msg(4,xv) IF ( cd_feedback_mask( pig, ips_save, ipe_save , pjg, jps_save, jpe_save, .FALSE., .FALSE. ) ) THEN grid%i_acswuptc(pig,pjg) = xv(1) ENDIF ENDIF IF ( SIZE(grid%i_acswdnt) .GT. 1 ) THEN CALL rsl_lite_from_child_msg(4,xv) IF ( cd_feedback_mask( pig, ips_save, ipe_save , pjg, jps_save, jpe_save, .FALSE., .FALSE. ) ) THEN grid%i_acswdnt(pig,pjg) = xv(1) ENDIF ENDIF IF ( SIZE(grid%i_acswdntc) .GT. 1 ) THEN CALL rsl_lite_from_child_msg(4,xv) IF ( cd_feedback_mask( pig, ips_save, ipe_save , pjg, jps_save, jpe_save, .FALSE., .FALSE. ) ) THEN grid%i_acswdntc(pig,pjg) = xv(1) ENDIF ENDIF IF ( SIZE(grid%i_acswupb) .GT. 1 ) THEN CALL rsl_lite_from_child_msg(4,xv) IF ( cd_feedback_mask( pig, ips_save, ipe_save , pjg, jps_save, jpe_save, .FALSE., .FALSE. ) ) THEN grid%i_acswupb(pig,pjg) = xv(1) ENDIF ENDIF IF ( SIZE(grid%i_acswupbc) .GT. 1 ) THEN CALL rsl_lite_from_child_msg(4,xv) IF ( cd_feedback_mask( pig, ips_save, ipe_save , pjg, jps_save, jpe_save, .FALSE., .FALSE. ) ) THEN grid%i_acswupbc(pig,pjg) = xv(1) ENDIF ENDIF IF ( SIZE(grid%i_acswdnb) .GT. 1 ) THEN CALL rsl_lite_from_child_msg(4,xv) IF ( cd_feedback_mask( pig, ips_save, ipe_save , pjg, jps_save, jpe_save, .FALSE., .FALSE. ) ) THEN grid%i_acswdnb(pig,pjg) = xv(1) ENDIF ENDIF IF ( SIZE(grid%i_acswdnbc) .GT. 1 ) THEN CALL rsl_lite_from_child_msg(4,xv) IF ( cd_feedback_mask( pig, ips_save, ipe_save , pjg, jps_save, jpe_save, .FALSE., .FALSE. ) ) THEN grid%i_acswdnbc(pig,pjg) = xv(1) ENDIF ENDIF IF ( SIZE(grid%i_aclwupt) .GT. 1 ) THEN CALL rsl_lite_from_child_msg(4,xv) IF ( cd_feedback_mask( pig, ips_save, ipe_save , pjg, jps_save, jpe_save, .FALSE., .FALSE. ) ) THEN grid%i_aclwupt(pig,pjg) = xv(1) ENDIF ENDIF IF ( SIZE(grid%i_aclwuptc) .GT. 1 ) THEN CALL rsl_lite_from_child_msg(4,xv) IF ( cd_feedback_mask( pig, ips_save, ipe_save , pjg, jps_save, jpe_save, .FALSE., .FALSE. ) ) THEN grid%i_aclwuptc(pig,pjg) = xv(1) ENDIF ENDIF IF ( SIZE(grid%i_aclwdnt) .GT. 1 ) THEN CALL rsl_lite_from_child_msg(4,xv) IF ( cd_feedback_mask( pig, ips_save, ipe_save , pjg, jps_save, jpe_save, .FALSE., .FALSE. ) ) THEN grid%i_aclwdnt(pig,pjg) = xv(1) ENDIF ENDIF IF ( SIZE(grid%i_aclwdntc) .GT. 1 ) THEN CALL rsl_lite_from_child_msg(4,xv) IF ( cd_feedback_mask( pig, ips_save, ipe_save , pjg, jps_save, jpe_save, .FALSE., .FALSE. ) ) THEN grid%i_aclwdntc(pig,pjg) = xv(1) ENDIF ENDIF IF ( SIZE(grid%i_aclwupb) .GT. 1 ) THEN CALL rsl_lite_from_child_msg(4,xv) IF ( cd_feedback_mask( pig, ips_save, ipe_save , pjg, jps_save, jpe_save, .FALSE., .FALSE. ) ) THEN grid%i_aclwupb(pig,pjg) = xv(1) ENDIF ENDIF IF ( SIZE(grid%i_aclwupbc) .GT. 1 ) THEN CALL rsl_lite_from_child_msg(4,xv) IF ( cd_feedback_mask( pig, ips_save, ipe_save , pjg, jps_save, jpe_save, .FALSE., .FALSE. ) ) THEN grid%i_aclwupbc(pig,pjg) = xv(1) ENDIF ENDIF IF ( SIZE(grid%i_aclwdnb) .GT. 1 ) THEN CALL rsl_lite_from_child_msg(4,xv) IF ( cd_feedback_mask( pig, ips_save, ipe_save , pjg, jps_save, jpe_save, .FALSE., .FALSE. ) ) THEN grid%i_aclwdnb(pig,pjg) = xv(1) ENDIF ENDIF IF ( SIZE(grid%i_aclwdnbc) .GT. 1 ) THEN CALL rsl_lite_from_child_msg(4,xv) IF ( cd_feedback_mask( pig, ips_save, ipe_save , pjg, jps_save, jpe_save, .FALSE., .FALSE. ) ) THEN grid%i_aclwdnbc(pig,pjg) = xv(1) ENDIF ENDIF IF ( SIZE(grid%swupt) .GT. 1 ) THEN CALL rsl_lite_from_child_msg(4,xv) IF ( cd_feedback_mask( pig, ips_save, ipe_save , pjg, jps_save, jpe_save, .FALSE., .FALSE. ) ) THEN grid%swupt(pig,pjg) = xv(1) ENDIF ENDIF IF ( SIZE(grid%swuptc) .GT. 1 ) THEN CALL rsl_lite_from_child_msg(4,xv) IF ( cd_feedback_mask( pig, ips_save, ipe_save , pjg, jps_save, jpe_save, .FALSE., .FALSE. ) ) THEN grid%swuptc(pig,pjg) = xv(1) ENDIF ENDIF IF ( SIZE(grid%swdnt) .GT. 1 ) THEN CALL rsl_lite_from_child_msg(4,xv) IF ( cd_feedback_mask( pig, ips_save, ipe_save , pjg, jps_save, jpe_save, .FALSE., .FALSE. ) ) THEN grid%swdnt(pig,pjg) = xv(1) ENDIF ENDIF IF ( SIZE(grid%swdntc) .GT. 1 ) THEN CALL rsl_lite_from_child_msg(4,xv) IF ( cd_feedback_mask( pig, ips_save, ipe_save , pjg, jps_save, jpe_save, .FALSE., .FALSE. ) ) THEN grid%swdntc(pig,pjg) = xv(1) ENDIF ENDIF IF ( SIZE(grid%swupb) .GT. 1 ) THEN CALL rsl_lite_from_child_msg(4,xv) IF ( cd_feedback_mask( pig, ips_save, ipe_save , pjg, jps_save, jpe_save, .FALSE., .FALSE. ) ) THEN grid%swupb(pig,pjg) = xv(1) ENDIF ENDIF IF ( SIZE(grid%swupbc) .GT. 1 ) THEN CALL rsl_lite_from_child_msg(4,xv) IF ( cd_feedback_mask( pig, ips_save, ipe_save , pjg, jps_save, jpe_save, .FALSE., .FALSE. ) ) THEN grid%swupbc(pig,pjg) = xv(1) ENDIF ENDIF IF ( SIZE(grid%swdnb) .GT. 1 ) THEN CALL rsl_lite_from_child_msg(4,xv) IF ( cd_feedback_mask( pig, ips_save, ipe_save , pjg, jps_save, jpe_save, .FALSE., .FALSE. ) ) THEN grid%swdnb(pig,pjg) = xv(1) ENDIF ENDIF IF ( SIZE(grid%swdnbc) .GT. 1 ) THEN CALL rsl_lite_from_child_msg(4,xv) IF ( cd_feedback_mask( pig, ips_save, ipe_save , pjg, jps_save, jpe_save, .FALSE., .FALSE. ) ) THEN grid%swdnbc(pig,pjg) = xv(1) ENDIF ENDIF IF ( SIZE(grid%lwupt) .GT. 1 ) THEN CALL rsl_lite_from_child_msg(4,xv) IF ( cd_feedback_mask( pig, ips_save, ipe_save , pjg, jps_save, jpe_save, .FALSE., .FALSE. ) ) THEN grid%lwupt(pig,pjg) = xv(1) ENDIF ENDIF IF ( SIZE(grid%lwuptc) .GT. 1 ) THEN CALL rsl_lite_from_child_msg(4,xv) IF ( cd_feedback_mask( pig, ips_save, ipe_save , pjg, jps_save, jpe_save, .FALSE., .FALSE. ) ) THEN grid%lwuptc(pig,pjg) = xv(1) ENDIF ENDIF IF ( SIZE(grid%lwdnt) .GT. 1 ) THEN CALL rsl_lite_from_child_msg(4,xv) IF ( cd_feedback_mask( pig, ips_save, ipe_save , pjg, jps_save, jpe_save, .FALSE., .FALSE. ) ) THEN grid%lwdnt(pig,pjg) = xv(1) ENDIF ENDIF IF ( SIZE(grid%lwdntc) .GT. 1 ) THEN CALL rsl_lite_from_child_msg(4,xv) IF ( cd_feedback_mask( pig, ips_save, ipe_save , pjg, jps_save, jpe_save, .FALSE., .FALSE. ) ) THEN grid%lwdntc(pig,pjg) = xv(1) ENDIF ENDIF IF ( SIZE(grid%lwupb) .GT. 1 ) THEN CALL rsl_lite_from_child_msg(4,xv) IF ( cd_feedback_mask( pig, ips_save, ipe_save , pjg, jps_save, jpe_save, .FALSE., .FALSE. ) ) THEN grid%lwupb(pig,pjg) = xv(1) ENDIF ENDIF IF ( SIZE(grid%lwupbc) .GT. 1 ) THEN CALL rsl_lite_from_child_msg(4,xv) IF ( cd_feedback_mask( pig, ips_save, ipe_save , pjg, jps_save, jpe_save, .FALSE., .FALSE. ) ) THEN grid%lwupbc(pig,pjg) = xv(1) ENDIF ENDIF IF ( SIZE(grid%lwdnb) .GT. 1 ) THEN CALL rsl_lite_from_child_msg(4,xv) IF ( cd_feedback_mask( pig, ips_save, ipe_save , pjg, jps_save, jpe_save, .FALSE., .FALSE. ) ) THEN grid%lwdnb(pig,pjg) = xv(1) ENDIF ENDIF IF ( SIZE(grid%lwdnbc) .GT. 1 ) THEN CALL rsl_lite_from_child_msg(4,xv) IF ( cd_feedback_mask( pig, ips_save, ipe_save , pjg, jps_save, jpe_save, .FALSE., .FALSE. ) ) THEN grid%lwdnbc(pig,pjg) = xv(1) ENDIF ENDIF IF ( SIZE(grid%xlat) .GT. 1 ) THEN CALL rsl_lite_from_child_msg(4,xv) IF ( cd_feedback_mask( pig, ips_save, ipe_save , pjg, jps_save, jpe_save, .FALSE., .FALSE. ) ) THEN grid%xlat(pig,pjg) = xv(1) ENDIF ENDIF IF ( SIZE(grid%xlong) .GT. 1 ) THEN CALL rsl_lite_from_child_msg(4,xv) IF ( cd_feedback_mask( pig, ips_save, ipe_save , pjg, jps_save, jpe_save, .FALSE., .FALSE. ) ) THEN grid%xlong(pig,pjg) = xv(1) ENDIF ENDIF IF ( SIZE(grid%xlat_u) .GT. 1 ) THEN CALL rsl_lite_from_child_msg(4,xv) IF ( cd_feedback_mask( pig, ips_save, ipe_save , pjg, jps_save, jpe_save, .TRUE., .FALSE. ) ) THEN grid%xlat_u(pig,pjg) = xv(1) ENDIF ENDIF IF ( SIZE(grid%xlong_u) .GT. 1 ) THEN CALL rsl_lite_from_child_msg(4,xv) IF ( cd_feedback_mask( pig, ips_save, ipe_save , pjg, jps_save, jpe_save, .TRUE., .FALSE. ) ) THEN grid%xlong_u(pig,pjg) = xv(1) ENDIF ENDIF IF ( SIZE(grid%xlat_v) .GT. 1 ) THEN CALL rsl_lite_from_child_msg(4,xv) IF ( cd_feedback_mask( pig, ips_save, ipe_save , pjg, jps_save, jpe_save, .FALSE., .TRUE. ) ) THEN grid%xlat_v(pig,pjg) = xv(1) ENDIF ENDIF IF ( SIZE(grid%xlong_v) .GT. 1 ) THEN CALL rsl_lite_from_child_msg(4,xv) IF ( cd_feedback_mask( pig, ips_save, ipe_save , pjg, jps_save, jpe_save, .FALSE., .TRUE. ) ) THEN grid%xlong_v(pig,pjg) = xv(1) ENDIF ENDIF IF ( SIZE(grid%clat) .GT. 1 ) THEN CALL rsl_lite_from_child_msg(4,xv) IF ( cd_feedback_mask( pig, ips_save, ipe_save , pjg, jps_save, jpe_save, .FALSE., .FALSE. ) ) THEN grid%clat(pig,pjg) = xv(1) ENDIF ENDIF IF ( SIZE(grid%isnowxy) .GT. 1 ) THEN CALL rsl_lite_from_child_msg(4,xv) IF ( cd_feedback_mask( pig, ips_save, ipe_save , pjg, jps_save, jpe_save, .FALSE., .FALSE. ) ) THEN grid%isnowxy(pig,pjg) = xv(1) ENDIF ENDIF IF ( SIZE(grid%tvxy) .GT. 1 ) THEN CALL rsl_lite_from_child_msg(4,xv) IF ( cd_feedback_mask( pig, ips_save, ipe_save , pjg, jps_save, jpe_save, .FALSE., .FALSE. ) ) THEN grid%tvxy(pig,pjg) = xv(1) ENDIF ENDIF IF ( SIZE(grid%tgxy) .GT. 1 ) THEN CALL rsl_lite_from_child_msg(4,xv) IF ( cd_feedback_mask( pig, ips_save, ipe_save , pjg, jps_save, jpe_save, .FALSE., .FALSE. ) ) THEN grid%tgxy(pig,pjg) = xv(1) ENDIF ENDIF IF ( SIZE(grid%canliqxy) .GT. 1 ) THEN CALL rsl_lite_from_child_msg(4,xv) IF ( cd_feedback_mask( pig, ips_save, ipe_save , pjg, jps_save, jpe_save, .FALSE., .FALSE. ) ) THEN grid%canliqxy(pig,pjg) = xv(1) ENDIF ENDIF IF ( SIZE(grid%canicexy) .GT. 1 ) THEN CALL rsl_lite_from_child_msg(4,xv) IF ( cd_feedback_mask( pig, ips_save, ipe_save , pjg, jps_save, jpe_save, .FALSE., .FALSE. ) ) THEN grid%canicexy(pig,pjg) = xv(1) ENDIF ENDIF IF ( SIZE(grid%eahxy) .GT. 1 ) THEN CALL rsl_lite_from_child_msg(4,xv) IF ( cd_feedback_mask( pig, ips_save, ipe_save , pjg, jps_save, jpe_save, .FALSE., .FALSE. ) ) THEN grid%eahxy(pig,pjg) = xv(1) ENDIF ENDIF IF ( SIZE(grid%tahxy) .GT. 1 ) THEN CALL rsl_lite_from_child_msg(4,xv) IF ( cd_feedback_mask( pig, ips_save, ipe_save , pjg, jps_save, jpe_save, .FALSE., .FALSE. ) ) THEN grid%tahxy(pig,pjg) = xv(1) ENDIF ENDIF IF ( SIZE(grid%cmxy) .GT. 1 ) THEN CALL rsl_lite_from_child_msg(4,xv) IF ( cd_feedback_mask( pig, ips_save, ipe_save , pjg, jps_save, jpe_save, .FALSE., .FALSE. ) ) THEN grid%cmxy(pig,pjg) = xv(1) ENDIF ENDIF IF ( SIZE(grid%chxy) .GT. 1 ) THEN CALL rsl_lite_from_child_msg(4,xv) IF ( cd_feedback_mask( pig, ips_save, ipe_save , pjg, jps_save, jpe_save, .FALSE., .FALSE. ) ) THEN grid%chxy(pig,pjg) = xv(1) ENDIF ENDIF IF ( SIZE(grid%fwetxy) .GT. 1 ) THEN CALL rsl_lite_from_child_msg(4,xv) IF ( cd_feedback_mask( pig, ips_save, ipe_save , pjg, jps_save, jpe_save, .FALSE., .FALSE. ) ) THEN grid%fwetxy(pig,pjg) = xv(1) ENDIF ENDIF IF ( SIZE(grid%sneqvoxy) .GT. 1 ) THEN CALL rsl_lite_from_child_msg(4,xv) IF ( cd_feedback_mask( pig, ips_save, ipe_save , pjg, jps_save, jpe_save, .FALSE., .FALSE. ) ) THEN grid%sneqvoxy(pig,pjg) = xv(1) ENDIF ENDIF IF ( SIZE(grid%alboldxy) .GT. 1 ) THEN CALL rsl_lite_from_child_msg(4,xv) IF ( cd_feedback_mask( pig, ips_save, ipe_save , pjg, jps_save, jpe_save, .FALSE., .FALSE. ) ) THEN grid%alboldxy(pig,pjg) = xv(1) ENDIF ENDIF IF ( SIZE(grid%qsnowxy) .GT. 1 ) THEN CALL rsl_lite_from_child_msg(4,xv) IF ( cd_feedback_mask( pig, ips_save, ipe_save , pjg, jps_save, jpe_save, .FALSE., .FALSE. ) ) THEN grid%qsnowxy(pig,pjg) = xv(1) ENDIF ENDIF IF ( SIZE(grid%wslakexy) .GT. 1 ) THEN CALL rsl_lite_from_child_msg(4,xv) IF ( cd_feedback_mask( pig, ips_save, ipe_save , pjg, jps_save, jpe_save, .FALSE., .FALSE. ) ) THEN grid%wslakexy(pig,pjg) = xv(1) ENDIF ENDIF IF ( SIZE(grid%zwtxy) .GT. 1 ) THEN CALL rsl_lite_from_child_msg(4,xv) IF ( cd_feedback_mask( pig, ips_save, ipe_save , pjg, jps_save, jpe_save, .FALSE., .FALSE. ) ) THEN grid%zwtxy(pig,pjg) = xv(1) ENDIF ENDIF IF ( SIZE(grid%waxy) .GT. 1 ) THEN CALL rsl_lite_from_child_msg(4,xv) IF ( cd_feedback_mask( pig, ips_save, ipe_save , pjg, jps_save, jpe_save, .FALSE., .FALSE. ) ) THEN grid%waxy(pig,pjg) = xv(1) ENDIF ENDIF IF ( SIZE(grid%wtxy) .GT. 1 ) THEN CALL rsl_lite_from_child_msg(4,xv) IF ( cd_feedback_mask( pig, ips_save, ipe_save , pjg, jps_save, jpe_save, .FALSE., .FALSE. ) ) THEN grid%wtxy(pig,pjg) = xv(1) ENDIF ENDIF IF ( SIZE(grid%zsnsoxy) .GT. 1 ) THEN CALL rsl_lite_from_child_msg(((config_flags%num_snso_layers)-(1)+1)*4,xv) ; IF ( cd_feedback_mask( pig, ips_save, ipe_save , pjg, jps_save, jpe_save, .FALSE., .FALSE. ) ) THEN DO k = 1,config_flags%num_snso_layers grid%zsnsoxy(pig,k,pjg) = xv(k) ENDDO ENDIF ENDIF IF ( SIZE(grid%tsnoxy) .GT. 1 ) THEN CALL rsl_lite_from_child_msg(((config_flags%num_snow_layers)-(1)+1)*4,xv) ; IF ( cd_feedback_mask( pig, ips_save, ipe_save , pjg, jps_save, jpe_save, .FALSE., .FALSE. ) ) THEN DO k = 1,config_flags%num_snow_layers grid%tsnoxy(pig,k,pjg) = xv(k) ENDDO ENDIF ENDIF IF ( SIZE(grid%snicexy) .GT. 1 ) THEN CALL rsl_lite_from_child_msg(((config_flags%num_snow_layers)-(1)+1)*4,xv) ; IF ( cd_feedback_mask( pig, ips_save, ipe_save , pjg, jps_save, jpe_save, .FALSE., .FALSE. ) ) THEN DO k = 1,config_flags%num_snow_layers grid%snicexy(pig,k,pjg) = xv(k) ENDDO ENDIF ENDIF IF ( SIZE(grid%snliqxy) .GT. 1 ) THEN CALL rsl_lite_from_child_msg(((config_flags%num_snow_layers)-(1)+1)*4,xv) ; IF ( cd_feedback_mask( pig, ips_save, ipe_save , pjg, jps_save, jpe_save, .FALSE., .FALSE. ) ) THEN DO k = 1,config_flags%num_snow_layers grid%snliqxy(pig,k,pjg) = xv(k) ENDDO ENDIF ENDIF IF ( SIZE(grid%lfmassxy) .GT. 1 ) THEN CALL rsl_lite_from_child_msg(4,xv) IF ( cd_feedback_mask( pig, ips_save, ipe_save , pjg, jps_save, jpe_save, .FALSE., .FALSE. ) ) THEN grid%lfmassxy(pig,pjg) = xv(1) ENDIF ENDIF IF ( SIZE(grid%rtmassxy) .GT. 1 ) THEN CALL rsl_lite_from_child_msg(4,xv) IF ( cd_feedback_mask( pig, ips_save, ipe_save , pjg, jps_save, jpe_save, .FALSE., .FALSE. ) ) THEN grid%rtmassxy(pig,pjg) = xv(1) ENDIF ENDIF IF ( SIZE(grid%stmassxy) .GT. 1 ) THEN CALL rsl_lite_from_child_msg(4,xv) IF ( cd_feedback_mask( pig, ips_save, ipe_save , pjg, jps_save, jpe_save, .FALSE., .FALSE. ) ) THEN grid%stmassxy(pig,pjg) = xv(1) ENDIF ENDIF IF ( SIZE(grid%woodxy) .GT. 1 ) THEN CALL rsl_lite_from_child_msg(4,xv) IF ( cd_feedback_mask( pig, ips_save, ipe_save , pjg, jps_save, jpe_save, .FALSE., .FALSE. ) ) THEN grid%woodxy(pig,pjg) = xv(1) ENDIF ENDIF IF ( SIZE(grid%stblcpxy) .GT. 1 ) THEN CALL rsl_lite_from_child_msg(4,xv) IF ( cd_feedback_mask( pig, ips_save, ipe_save , pjg, jps_save, jpe_save, .FALSE., .FALSE. ) ) THEN grid%stblcpxy(pig,pjg) = xv(1) ENDIF ENDIF IF ( SIZE(grid%fastcpxy) .GT. 1 ) THEN CALL rsl_lite_from_child_msg(4,xv) IF ( cd_feedback_mask( pig, ips_save, ipe_save , pjg, jps_save, jpe_save, .FALSE., .FALSE. ) ) THEN grid%fastcpxy(pig,pjg) = xv(1) ENDIF ENDIF IF ( SIZE(grid%xsaixy) .GT. 1 ) THEN CALL rsl_lite_from_child_msg(4,xv) IF ( cd_feedback_mask( pig, ips_save, ipe_save , pjg, jps_save, jpe_save, .FALSE., .FALSE. ) ) THEN grid%xsaixy(pig,pjg) = xv(1) ENDIF ENDIF IF ( SIZE(grid%tradxy) .GT. 1 ) THEN CALL rsl_lite_from_child_msg(4,xv) IF ( cd_feedback_mask( pig, ips_save, ipe_save , pjg, jps_save, jpe_save, .FALSE., .FALSE. ) ) THEN grid%tradxy(pig,pjg) = xv(1) ENDIF ENDIF IF ( SIZE(grid%tsxy) .GT. 1 ) THEN CALL rsl_lite_from_child_msg(4,xv) IF ( cd_feedback_mask( pig, ips_save, ipe_save , pjg, jps_save, jpe_save, .FALSE., .FALSE. ) ) THEN grid%tsxy(pig,pjg) = xv(1) ENDIF ENDIF IF ( SIZE(grid%neexy) .GT. 1 ) THEN CALL rsl_lite_from_child_msg(4,xv) IF ( cd_feedback_mask( pig, ips_save, ipe_save , pjg, jps_save, jpe_save, .FALSE., .FALSE. ) ) THEN grid%neexy(pig,pjg) = xv(1) ENDIF ENDIF IF ( SIZE(grid%gppxy) .GT. 1 ) THEN CALL rsl_lite_from_child_msg(4,xv) IF ( cd_feedback_mask( pig, ips_save, ipe_save , pjg, jps_save, jpe_save, .FALSE., .FALSE. ) ) THEN grid%gppxy(pig,pjg) = xv(1) ENDIF ENDIF IF ( SIZE(grid%nppxy) .GT. 1 ) THEN CALL rsl_lite_from_child_msg(4,xv) IF ( cd_feedback_mask( pig, ips_save, ipe_save , pjg, jps_save, jpe_save, .FALSE., .FALSE. ) ) THEN grid%nppxy(pig,pjg) = xv(1) ENDIF ENDIF IF ( SIZE(grid%fvegxy) .GT. 1 ) THEN CALL rsl_lite_from_child_msg(4,xv) IF ( cd_feedback_mask( pig, ips_save, ipe_save , pjg, jps_save, jpe_save, .FALSE., .FALSE. ) ) THEN grid%fvegxy(pig,pjg) = xv(1) ENDIF ENDIF IF ( SIZE(grid%qinxy) .GT. 1 ) THEN CALL rsl_lite_from_child_msg(4,xv) IF ( cd_feedback_mask( pig, ips_save, ipe_save , pjg, jps_save, jpe_save, .FALSE., .FALSE. ) ) THEN grid%qinxy(pig,pjg) = xv(1) ENDIF ENDIF IF ( SIZE(grid%runsfxy) .GT. 1 ) THEN CALL rsl_lite_from_child_msg(4,xv) IF ( cd_feedback_mask( pig, ips_save, ipe_save , pjg, jps_save, jpe_save, .FALSE., .FALSE. ) ) THEN grid%runsfxy(pig,pjg) = xv(1) ENDIF ENDIF IF ( SIZE(grid%runsbxy) .GT. 1 ) THEN CALL rsl_lite_from_child_msg(4,xv) IF ( cd_feedback_mask( pig, ips_save, ipe_save , pjg, jps_save, jpe_save, .FALSE., .FALSE. ) ) THEN grid%runsbxy(pig,pjg) = xv(1) ENDIF ENDIF IF ( SIZE(grid%ecanxy) .GT. 1 ) THEN CALL rsl_lite_from_child_msg(4,xv) IF ( cd_feedback_mask( pig, ips_save, ipe_save , pjg, jps_save, jpe_save, .FALSE., .FALSE. ) ) THEN grid%ecanxy(pig,pjg) = xv(1) ENDIF ENDIF IF ( SIZE(grid%edirxy) .GT. 1 ) THEN CALL rsl_lite_from_child_msg(4,xv) IF ( cd_feedback_mask( pig, ips_save, ipe_save , pjg, jps_save, jpe_save, .FALSE., .FALSE. ) ) THEN grid%edirxy(pig,pjg) = xv(1) ENDIF ENDIF IF ( SIZE(grid%etranxy) .GT. 1 ) THEN CALL rsl_lite_from_child_msg(4,xv) IF ( cd_feedback_mask( pig, ips_save, ipe_save , pjg, jps_save, jpe_save, .FALSE., .FALSE. ) ) THEN grid%etranxy(pig,pjg) = xv(1) ENDIF ENDIF IF ( SIZE(grid%fsaxy) .GT. 1 ) THEN CALL rsl_lite_from_child_msg(4,xv) IF ( cd_feedback_mask( pig, ips_save, ipe_save , pjg, jps_save, jpe_save, .FALSE., .FALSE. ) ) THEN grid%fsaxy(pig,pjg) = xv(1) ENDIF ENDIF IF ( SIZE(grid%firaxy) .GT. 1 ) THEN CALL rsl_lite_from_child_msg(4,xv) IF ( cd_feedback_mask( pig, ips_save, ipe_save , pjg, jps_save, jpe_save, .FALSE., .FALSE. ) ) THEN grid%firaxy(pig,pjg) = xv(1) ENDIF ENDIF IF ( SIZE(grid%aparxy) .GT. 1 ) THEN CALL rsl_lite_from_child_msg(4,xv) IF ( cd_feedback_mask( pig, ips_save, ipe_save , pjg, jps_save, jpe_save, .FALSE., .FALSE. ) ) THEN grid%aparxy(pig,pjg) = xv(1) ENDIF ENDIF IF ( SIZE(grid%psnxy) .GT. 1 ) THEN CALL rsl_lite_from_child_msg(4,xv) IF ( cd_feedback_mask( pig, ips_save, ipe_save , pjg, jps_save, jpe_save, .FALSE., .FALSE. ) ) THEN grid%psnxy(pig,pjg) = xv(1) ENDIF ENDIF IF ( SIZE(grid%savxy) .GT. 1 ) THEN CALL rsl_lite_from_child_msg(4,xv) IF ( cd_feedback_mask( pig, ips_save, ipe_save , pjg, jps_save, jpe_save, .FALSE., .FALSE. ) ) THEN grid%savxy(pig,pjg) = xv(1) ENDIF ENDIF IF ( SIZE(grid%sagxy) .GT. 1 ) THEN CALL rsl_lite_from_child_msg(4,xv) IF ( cd_feedback_mask( pig, ips_save, ipe_save , pjg, jps_save, jpe_save, .FALSE., .FALSE. ) ) THEN grid%sagxy(pig,pjg) = xv(1) ENDIF ENDIF IF ( SIZE(grid%fsnoxy) .GT. 1 ) THEN CALL rsl_lite_from_child_msg(4,xv) IF ( cd_feedback_mask( pig, ips_save, ipe_save , pjg, jps_save, jpe_save, .FALSE., .FALSE. ) ) THEN grid%fsnoxy(pig,pjg) = xv(1) ENDIF ENDIF IF ( SIZE(grid%t2mvxy) .GT. 1 ) THEN CALL rsl_lite_from_child_msg(4,xv) IF ( cd_feedback_mask( pig, ips_save, ipe_save , pjg, jps_save, jpe_save, .FALSE., .FALSE. ) ) THEN grid%t2mvxy(pig,pjg) = xv(1) ENDIF ENDIF IF ( SIZE(grid%t2mbxy) .GT. 1 ) THEN CALL rsl_lite_from_child_msg(4,xv) IF ( cd_feedback_mask( pig, ips_save, ipe_save , pjg, jps_save, jpe_save, .FALSE., .FALSE. ) ) THEN grid%t2mbxy(pig,pjg) = xv(1) ENDIF ENDIF IF ( SIZE(grid%q2mvxy) .GT. 1 ) THEN CALL rsl_lite_from_child_msg(4,xv) IF ( cd_feedback_mask( pig, ips_save, ipe_save , pjg, jps_save, jpe_save, .FALSE., .FALSE. ) ) THEN grid%q2mvxy(pig,pjg) = xv(1) ENDIF ENDIF IF ( SIZE(grid%q2mbxy) .GT. 1 ) THEN CALL rsl_lite_from_child_msg(4,xv) IF ( cd_feedback_mask( pig, ips_save, ipe_save , pjg, jps_save, jpe_save, .FALSE., .FALSE. ) ) THEN grid%q2mbxy(pig,pjg) = xv(1) ENDIF ENDIF IF ( SIZE(grid%chstarxy) .GT. 1 ) THEN CALL rsl_lite_from_child_msg(4,xv) IF ( cd_feedback_mask( pig, ips_save, ipe_save , pjg, jps_save, jpe_save, .FALSE., .FALSE. ) ) THEN grid%chstarxy(pig,pjg) = xv(1) ENDIF ENDIF IF ( SIZE(grid%rssunxy) .GT. 1 ) THEN CALL rsl_lite_from_child_msg(4,xv) IF ( cd_feedback_mask( pig, ips_save, ipe_save , pjg, jps_save, jpe_save, .FALSE., .FALSE. ) ) THEN grid%rssunxy(pig,pjg) = xv(1) ENDIF ENDIF IF ( SIZE(grid%rsshaxy) .GT. 1 ) THEN CALL rsl_lite_from_child_msg(4,xv) IF ( cd_feedback_mask( pig, ips_save, ipe_save , pjg, jps_save, jpe_save, .FALSE., .FALSE. ) ) THEN grid%rsshaxy(pig,pjg) = xv(1) ENDIF ENDIF IF ( SIZE(grid%bgapxy) .GT. 1 ) THEN CALL rsl_lite_from_child_msg(4,xv) IF ( cd_feedback_mask( pig, ips_save, ipe_save , pjg, jps_save, jpe_save, .FALSE., .FALSE. ) ) THEN grid%bgapxy(pig,pjg) = xv(1) ENDIF ENDIF IF ( SIZE(grid%wgapxy) .GT. 1 ) THEN CALL rsl_lite_from_child_msg(4,xv) IF ( cd_feedback_mask( pig, ips_save, ipe_save , pjg, jps_save, jpe_save, .FALSE., .FALSE. ) ) THEN grid%wgapxy(pig,pjg) = xv(1) ENDIF ENDIF IF ( SIZE(grid%gapxy) .GT. 1 ) THEN CALL rsl_lite_from_child_msg(4,xv) IF ( cd_feedback_mask( pig, ips_save, ipe_save , pjg, jps_save, jpe_save, .FALSE., .FALSE. ) ) THEN grid%gapxy(pig,pjg) = xv(1) ENDIF ENDIF IF ( SIZE(grid%tgvxy) .GT. 1 ) THEN CALL rsl_lite_from_child_msg(4,xv) IF ( cd_feedback_mask( pig, ips_save, ipe_save , pjg, jps_save, jpe_save, .FALSE., .FALSE. ) ) THEN grid%tgvxy(pig,pjg) = xv(1) ENDIF ENDIF IF ( SIZE(grid%tgbxy) .GT. 1 ) THEN CALL rsl_lite_from_child_msg(4,xv) IF ( cd_feedback_mask( pig, ips_save, ipe_save , pjg, jps_save, jpe_save, .FALSE., .FALSE. ) ) THEN grid%tgbxy(pig,pjg) = xv(1) ENDIF ENDIF IF ( SIZE(grid%chvxy) .GT. 1 ) THEN CALL rsl_lite_from_child_msg(4,xv) IF ( cd_feedback_mask( pig, ips_save, ipe_save , pjg, jps_save, jpe_save, .FALSE., .FALSE. ) ) THEN grid%chvxy(pig,pjg) = xv(1) ENDIF ENDIF IF ( SIZE(grid%chbxy) .GT. 1 ) THEN CALL rsl_lite_from_child_msg(4,xv) IF ( cd_feedback_mask( pig, ips_save, ipe_save , pjg, jps_save, jpe_save, .FALSE., .FALSE. ) ) THEN grid%chbxy(pig,pjg) = xv(1) ENDIF ENDIF IF ( SIZE(grid%tmn) .GT. 1 ) THEN CALL rsl_lite_from_child_msg(4,xv) IF ( cd_feedback_mask( pig, ips_save, ipe_save , pjg, jps_save, jpe_save, .FALSE., .FALSE. ) ) THEN grid%tmn(pig,pjg) = xv(1) ENDIF ENDIF IF ( SIZE(grid%tyr) .GT. 1 ) THEN CALL rsl_lite_from_child_msg(4,xv) IF ( cd_feedback_mask( pig, ips_save, ipe_save , pjg, jps_save, jpe_save, .FALSE., .FALSE. ) ) THEN grid%tyr(pig,pjg) = xv(1) ENDIF ENDIF IF ( SIZE(grid%tyra) .GT. 1 ) THEN CALL rsl_lite_from_child_msg(4,xv) IF ( cd_feedback_mask( pig, ips_save, ipe_save , pjg, jps_save, jpe_save, .FALSE., .FALSE. ) ) THEN grid%tyra(pig,pjg) = xv(1) ENDIF ENDIF IF ( SIZE(grid%tdly) .GT. 1 ) THEN CALL rsl_lite_from_child_msg(4,xv) IF ( cd_feedback_mask( pig, ips_save, ipe_save , pjg, jps_save, jpe_save, .FALSE., .FALSE. ) ) THEN grid%tdly(pig,pjg) = xv(1) ENDIF ENDIF IF ( SIZE(grid%tlag) .GT. 1 ) THEN CALL rsl_lite_from_child_msg(((config_flags%lagday)-(1)+1)*4,xv) ; IF ( cd_feedback_mask( pig, ips_save, ipe_save , pjg, jps_save, jpe_save, .FALSE., .FALSE. ) ) THEN DO k = 1,config_flags%lagday grid%tlag(pig,k,pjg) = xv(k) ENDDO ENDIF ENDIF IF ( SIZE(grid%xland) .GT. 1 ) THEN CALL rsl_lite_from_child_msg(4,xv) IF ( cd_feedback_mask( pig, ips_save, ipe_save , pjg, jps_save, jpe_save, .FALSE., .FALSE. ) ) THEN grid%xland(pig,pjg) = xv(1) ENDIF ENDIF IF ( SIZE(grid%achfx) .GT. 1 ) THEN CALL rsl_lite_from_child_msg(4,xv) IF ( cd_feedback_mask( pig, ips_save, ipe_save , pjg, jps_save, jpe_save, .FALSE., .FALSE. ) ) THEN grid%achfx(pig,pjg) = xv(1) ENDIF ENDIF IF ( SIZE(grid%aclhf) .GT. 1 ) THEN CALL rsl_lite_from_child_msg(4,xv) IF ( cd_feedback_mask( pig, ips_save, ipe_save , pjg, jps_save, jpe_save, .FALSE., .FALSE. ) ) THEN grid%aclhf(pig,pjg) = xv(1) ENDIF ENDIF IF ( SIZE(grid%snowc) .GT. 1 ) THEN CALL rsl_lite_from_child_msg(4,xv) IF ( cd_feedback_mask( pig, ips_save, ipe_save , pjg, jps_save, jpe_save, .FALSE., .FALSE. ) ) THEN grid%snowc(pig,pjg) = xv(1) ENDIF ENDIF IF ( SIZE(grid%tml) .GT. 1 ) THEN CALL rsl_lite_from_child_msg(4,xv) IF ( cd_feedback_mask( pig, ips_save, ipe_save , pjg, jps_save, jpe_save, .FALSE., .FALSE. ) ) THEN grid%tml(pig,pjg) = xv(1) ENDIF ENDIF IF ( SIZE(grid%t0ml) .GT. 1 ) THEN CALL rsl_lite_from_child_msg(4,xv) IF ( cd_feedback_mask( pig, ips_save, ipe_save , pjg, jps_save, jpe_save, .FALSE., .FALSE. ) ) THEN grid%t0ml(pig,pjg) = xv(1) ENDIF ENDIF IF ( SIZE(grid%hml) .GT. 1 ) THEN CALL rsl_lite_from_child_msg(4,xv) IF ( cd_feedback_mask( pig, ips_save, ipe_save , pjg, jps_save, jpe_save, .FALSE., .FALSE. ) ) THEN grid%hml(pig,pjg) = xv(1) ENDIF ENDIF IF ( SIZE(grid%h0ml) .GT. 1 ) THEN CALL rsl_lite_from_child_msg(4,xv) IF ( cd_feedback_mask( pig, ips_save, ipe_save , pjg, jps_save, jpe_save, .FALSE., .FALSE. ) ) THEN grid%h0ml(pig,pjg) = xv(1) ENDIF ENDIF IF ( SIZE(grid%huml) .GT. 1 ) THEN CALL rsl_lite_from_child_msg(4,xv) IF ( cd_feedback_mask( pig, ips_save, ipe_save , pjg, jps_save, jpe_save, .FALSE., .FALSE. ) ) THEN grid%huml(pig,pjg) = xv(1) ENDIF ENDIF IF ( SIZE(grid%hvml) .GT. 1 ) THEN CALL rsl_lite_from_child_msg(4,xv) IF ( cd_feedback_mask( pig, ips_save, ipe_save , pjg, jps_save, jpe_save, .FALSE., .FALSE. ) ) THEN grid%hvml(pig,pjg) = xv(1) ENDIF ENDIF IF ( SIZE(grid%tmoml) .GT. 1 ) THEN CALL rsl_lite_from_child_msg(4,xv) IF ( cd_feedback_mask( pig, ips_save, ipe_save , pjg, jps_save, jpe_save, .FALSE., .FALSE. ) ) THEN grid%tmoml(pig,pjg) = xv(1) ENDIF ENDIF IF ( SIZE(grid%landmask) .GT. 1 ) THEN CALL rsl_lite_from_child_msg(4,xv) IF ( cd_feedback_mask( pig, ips_save, ipe_save , pjg, jps_save, jpe_save, .FALSE., .FALSE. ) ) THEN grid%landmask(pig,pjg) = xv(1) ENDIF ENDIF DO itrace = PARAM_FIRST_SCALAR, num_tracer CALL rsl_lite_from_child_msg((((ckde-1))-(ckds)+1)*4,xv) ; IF ( cd_feedback_mask( pig, ips_save, ipe_save , pjg, jps_save, jpe_save, .FALSE., .FALSE. ) ) THEN DO k = ckds,(ckde-1) tracer(pig,k,pjg,itrace) = xv(k) ENDDO ENDIF ENDDO CALL rsl_lite_from_child_info(pig,pjg,retval) ENDDO CALL get_ijk_from_grid ( ngrid, & nids, nide, njds, njde, nkds, nkde, & nims, nime, njms, njme, nkms, nkme, & nips, nipe, njps, njpe, nkps, nkpe ) CALL get_ijk_from_grid ( grid , & ids, ide, jds, jde, kds, kde, & ims, ime, jms, jme, kms, kme, & ips, ipe, jps, jpe, kps, kpe ) CALL HALO_INTERP_UP_sub ( grid, & config_flags, & num_moist, & moist, & num_dfi_moist, & dfi_moist, & num_scalar, & scalar, & num_dfi_scalar, & dfi_scalar, & num_tracer, & tracer, & local_communicator, & mytask, ntasks, ntasks_x, ntasks_y, & ids, ide, jds, jde, kds, kde, & ims, ime, jms, jme, kms, kme, & ips, ipe, jps, jpe, kps, kpe ) CALL get_ijk_from_grid ( grid , & cids, cide, cjds, cjde, ckds, ckde, & cims, cime, cjms, cjme, ckms, ckme, & cips, cipe, cjps, cjpe, ckps, ckpe ) IF ( SIZE( grid%u_2, 1 ) * SIZE( grid%u_2, 3 ) .GT. 1 ) THEN CALL smoother ( & grid%u_2, & cids, cide, ckds, ckde, cjds, cjde, & cims, cime, ckms, ckme, cjms, cjme, & cips, cipe, ckps, MIN( (ckde-1), ckpe ), cjps, cjpe, & nids, nide, nkds, nkde, njds, njde, & nims, nime, nkms, nkme, njms, njme, & nips, nipe, nkps, MIN( (nkde-1), nkpe ), njps, njpe, & .TRUE., .FALSE., & ngrid%i_parent_start, ngrid%j_parent_start, & ngrid%parent_grid_ratio, ngrid%parent_grid_ratio & ) ENDIF IF ( SIZE( grid%v_2, 1 ) * SIZE( grid%v_2, 3 ) .GT. 1 ) THEN CALL smoother ( & grid%v_2, & cids, cide, ckds, ckde, cjds, cjde, & cims, cime, ckms, ckme, cjms, cjme, & cips, cipe, ckps, MIN( (ckde-1), ckpe ), cjps, cjpe, & nids, nide, nkds, nkde, njds, njde, & nims, nime, nkms, nkme, njms, njme, & nips, nipe, nkps, MIN( (nkde-1), nkpe ), njps, njpe, & .FALSE., .TRUE., & ngrid%i_parent_start, ngrid%j_parent_start, & ngrid%parent_grid_ratio, ngrid%parent_grid_ratio & ) ENDIF IF ( SIZE( grid%w_2, 1 ) * SIZE( grid%w_2, 3 ) .GT. 1 ) THEN CALL smoother ( & grid%w_2, & cids, cide, ckds, ckde, cjds, cjde, & cims, cime, ckms, ckme, cjms, cjme, & cips, cipe, ckps, MIN( ckde, ckpe ), cjps, cjpe, & nids, nide, nkds, nkde, njds, njde, & nims, nime, nkms, nkme, njms, njme, & nips, nipe, nkps, MIN( nkde, nkpe ), njps, njpe, & .FALSE., .FALSE., & ngrid%i_parent_start, ngrid%j_parent_start, & ngrid%parent_grid_ratio, ngrid%parent_grid_ratio & ) ENDIF IF ( SIZE( grid%ph_2, 1 ) * SIZE( grid%ph_2, 3 ) .GT. 1 ) THEN CALL smoother ( & grid%ph_2, & cids, cide, ckds, ckde, cjds, cjde, & cims, cime, ckms, ckme, cjms, cjme, & cips, cipe, ckps, MIN( ckde, ckpe ), cjps, cjpe, & nids, nide, nkds, nkde, njds, njde, & nims, nime, nkms, nkme, njms, njme, & nips, nipe, nkps, MIN( nkde, nkpe ), njps, njpe, & .FALSE., .FALSE., & ngrid%i_parent_start, ngrid%j_parent_start, & ngrid%parent_grid_ratio, ngrid%parent_grid_ratio & ) ENDIF IF ( SIZE( grid%phb, 1 ) * SIZE( grid%phb, 3 ) .GT. 1 ) THEN CALL smoother ( & grid%phb, & cids, cide, ckds, ckde, cjds, cjde, & cims, cime, ckms, ckme, cjms, cjme, & cips, cipe, ckps, MIN( ckde, ckpe ), cjps, cjpe, & nids, nide, nkds, nkde, njds, njde, & nims, nime, nkms, nkme, njms, njme, & nips, nipe, nkps, MIN( nkde, nkpe ), njps, njpe, & .FALSE., .FALSE., & ngrid%i_parent_start, ngrid%j_parent_start, & ngrid%parent_grid_ratio, ngrid%parent_grid_ratio & ) ENDIF IF ( SIZE( grid%t_2, 1 ) * SIZE( grid%t_2, 3 ) .GT. 1 ) THEN CALL smoother ( & grid%t_2, & cids, cide, ckds, ckde, cjds, cjde, & cims, cime, ckms, ckme, cjms, cjme, & cips, cipe, ckps, MIN( (ckde-1), ckpe ), cjps, cjpe, & nids, nide, nkds, nkde, njds, njde, & nims, nime, nkms, nkme, njms, njme, & nips, nipe, nkps, MIN( (nkde-1), nkpe ), njps, njpe, & .FALSE., .FALSE., & ngrid%i_parent_start, ngrid%j_parent_start, & ngrid%parent_grid_ratio, ngrid%parent_grid_ratio & ) ENDIF IF ( SIZE( grid%mu_2, 1 ) * SIZE( grid%mu_2, 2 ) .GT. 1 ) THEN CALL smoother ( & grid%mu_2, & cids, cide, 1, 1, cjds, cjde, & cims, cime, 1, 1, cjms, cjme, & cips, cipe, 1, 1, cjps, cjpe, & nids, nide, 1, 1, njds, njde, & nims, nime, 1, 1, njms, njme, & nips, nipe, 1, 1, njps, njpe, & .FALSE., .FALSE., & ngrid%i_parent_start, ngrid%j_parent_start, & ngrid%parent_grid_ratio, ngrid%parent_grid_ratio & ) ENDIF IF ( SIZE( grid%mub, 1 ) * SIZE( grid%mub, 2 ) .GT. 1 ) THEN CALL smoother ( & grid%mub, & cids, cide, 1, 1, cjds, cjde, & cims, cime, 1, 1, cjms, cjme, & cips, cipe, 1, 1, cjps, cjpe, & nids, nide, 1, 1, njds, njde, & nims, nime, 1, 1, njms, njme, & nips, nipe, 1, 1, njps, njpe, & .FALSE., .FALSE., & ngrid%i_parent_start, ngrid%j_parent_start, & ngrid%parent_grid_ratio, ngrid%parent_grid_ratio & ) ENDIF IF ( SIZE( grid%alb, 1 ) * SIZE( grid%alb, 3 ) .GT. 1 ) THEN CALL smoother ( & grid%alb, & cids, cide, ckds, ckde, cjds, cjde, & cims, cime, ckms, ckme, cjms, cjme, & cips, cipe, ckps, MIN( (ckde-1), ckpe ), cjps, cjpe, & nids, nide, nkds, nkde, njds, njde, & nims, nime, nkms, nkme, njms, njme, & nips, nipe, nkps, MIN( (nkde-1), nkpe ), njps, njpe, & .FALSE., .FALSE., & ngrid%i_parent_start, ngrid%j_parent_start, & ngrid%parent_grid_ratio, ngrid%parent_grid_ratio & ) ENDIF IF ( SIZE( grid%pb, 1 ) * SIZE( grid%pb, 3 ) .GT. 1 ) THEN CALL smoother ( & grid%pb, & cids, cide, ckds, ckde, cjds, cjde, & cims, cime, ckms, ckme, cjms, cjme, & cips, cipe, ckps, MIN( (ckde-1), ckpe ), cjps, cjpe, & nids, nide, nkds, nkde, njds, njde, & nims, nime, nkms, nkme, njms, njme, & nips, nipe, nkps, MIN( (nkde-1), nkpe ), njps, njpe, & .FALSE., .FALSE., & ngrid%i_parent_start, ngrid%j_parent_start, & ngrid%parent_grid_ratio, ngrid%parent_grid_ratio & ) ENDIF DO itrace = PARAM_FIRST_SCALAR, num_moist IF ( SIZE( moist, 1 ) * SIZE( moist, 3 ) .GT. 1 ) THEN CALL smoother ( & moist(grid%sm31,grid%sm32,grid%sm33,itrace), & cids, cide, ckds, ckde, cjds, cjde, & cims, cime, ckms, ckme, cjms, cjme, & cips, cipe, ckps, MIN( (ckde-1), ckpe ), cjps, cjpe, & nids, nide, nkds, nkde, njds, njde, & nims, nime, nkms, nkme, njms, njme, & nips, nipe, nkps, MIN( (nkde-1), nkpe ), njps, njpe, & .FALSE., .FALSE., & ngrid%i_parent_start, ngrid%j_parent_start, & ngrid%parent_grid_ratio, ngrid%parent_grid_ratio & ) ENDIF ENDDO DO itrace = PARAM_FIRST_SCALAR, num_dfi_moist IF ( SIZE( dfi_moist, 1 ) * SIZE( dfi_moist, 3 ) .GT. 1 ) THEN CALL smoother ( & dfi_moist(grid%sm31,grid%sm32,grid%sm33,itrace), & cids, cide, ckds, ckde, cjds, cjde, & cims, cime, ckms, ckme, cjms, cjme, & cips, cipe, ckps, MIN( (ckde-1), ckpe ), cjps, cjpe, & nids, nide, nkds, nkde, njds, njde, & nims, nime, nkms, nkme, njms, njme, & nips, nipe, nkps, MIN( (nkde-1), nkpe ), njps, njpe, & .FALSE., .FALSE., & ngrid%i_parent_start, ngrid%j_parent_start, & ngrid%parent_grid_ratio, ngrid%parent_grid_ratio & ) ENDIF ENDDO DO itrace = PARAM_FIRST_SCALAR, num_scalar IF ( SIZE( scalar, 1 ) * SIZE( scalar, 3 ) .GT. 1 ) THEN CALL smoother ( & scalar(grid%sm31,grid%sm32,grid%sm33,itrace), & cids, cide, ckds, ckde, cjds, cjde, & cims, cime, ckms, ckme, cjms, cjme, & cips, cipe, ckps, MIN( (ckde-1), ckpe ), cjps, cjpe, & nids, nide, nkds, nkde, njds, njde, & nims, nime, nkms, nkme, njms, njme, & nips, nipe, nkps, MIN( (nkde-1), nkpe ), njps, njpe, & .FALSE., .FALSE., & ngrid%i_parent_start, ngrid%j_parent_start, & ngrid%parent_grid_ratio, ngrid%parent_grid_ratio & ) ENDIF ENDDO DO itrace = PARAM_FIRST_SCALAR, num_dfi_scalar IF ( SIZE( dfi_scalar, 1 ) * SIZE( dfi_scalar, 3 ) .GT. 1 ) THEN CALL smoother ( & dfi_scalar(grid%sm31,grid%sm32,grid%sm33,itrace), & cids, cide, ckds, ckde, cjds, cjde, & cims, cime, ckms, ckme, cjms, cjme, & cips, cipe, ckps, MIN( (ckde-1), ckpe ), cjps, cjpe, & nids, nide, nkds, nkde, njds, njde, & nims, nime, nkms, nkme, njms, njme, & nips, nipe, nkps, MIN( (nkde-1), nkpe ), njps, njpe, & .FALSE., .FALSE., & ngrid%i_parent_start, ngrid%j_parent_start, & ngrid%parent_grid_ratio, ngrid%parent_grid_ratio & ) ENDIF ENDDO IF ( SIZE( grid%var2d, 1 ) * SIZE( grid%var2d, 2 ) .GT. 1 ) THEN CALL smoother ( & grid%var2d, & cids, cide, 1, 1, cjds, cjde, & cims, cime, 1, 1, cjms, cjme, & cips, cipe, 1, 1, cjps, cjpe, & nids, nide, 1, 1, njds, njde, & nims, nime, 1, 1, njms, njme, & nips, nipe, 1, 1, njps, njpe, & .FALSE., .FALSE., & ngrid%i_parent_start, ngrid%j_parent_start, & ngrid%parent_grid_ratio, ngrid%parent_grid_ratio & ) ENDIF IF ( SIZE( grid%oc12d, 1 ) * SIZE( grid%oc12d, 2 ) .GT. 1 ) THEN CALL smoother ( & grid%oc12d, & cids, cide, 1, 1, cjds, cjde, & cims, cime, 1, 1, cjms, cjme, & cips, cipe, 1, 1, cjps, cjpe, & nids, nide, 1, 1, njds, njde, & nims, nime, 1, 1, njms, njme, & nips, nipe, 1, 1, njps, njpe, & .FALSE., .FALSE., & ngrid%i_parent_start, ngrid%j_parent_start, & ngrid%parent_grid_ratio, ngrid%parent_grid_ratio & ) ENDIF IF ( SIZE( grid%oa1, 1 ) * SIZE( grid%oa1, 2 ) .GT. 1 ) THEN CALL smoother ( & grid%oa1, & cids, cide, 1, 1, cjds, cjde, & cims, cime, 1, 1, cjms, cjme, & cips, cipe, 1, 1, cjps, cjpe, & nids, nide, 1, 1, njds, njde, & nims, nime, 1, 1, njms, njme, & nips, nipe, 1, 1, njps, njpe, & .FALSE., .FALSE., & ngrid%i_parent_start, ngrid%j_parent_start, & ngrid%parent_grid_ratio, ngrid%parent_grid_ratio & ) ENDIF IF ( SIZE( grid%oa2, 1 ) * SIZE( grid%oa2, 2 ) .GT. 1 ) THEN CALL smoother ( & grid%oa2, & cids, cide, 1, 1, cjds, cjde, & cims, cime, 1, 1, cjms, cjme, & cips, cipe, 1, 1, cjps, cjpe, & nids, nide, 1, 1, njds, njde, & nims, nime, 1, 1, njms, njme, & nips, nipe, 1, 1, njps, njpe, & .FALSE., .FALSE., & ngrid%i_parent_start, ngrid%j_parent_start, & ngrid%parent_grid_ratio, ngrid%parent_grid_ratio & ) ENDIF IF ( SIZE( grid%oa3, 1 ) * SIZE( grid%oa3, 2 ) .GT. 1 ) THEN CALL smoother ( & grid%oa3, & cids, cide, 1, 1, cjds, cjde, & cims, cime, 1, 1, cjms, cjme, & cips, cipe, 1, 1, cjps, cjpe, & nids, nide, 1, 1, njds, njde, & nims, nime, 1, 1, njms, njme, & nips, nipe, 1, 1, njps, njpe, & .FALSE., .FALSE., & ngrid%i_parent_start, ngrid%j_parent_start, & ngrid%parent_grid_ratio, ngrid%parent_grid_ratio & ) ENDIF IF ( SIZE( grid%oa4, 1 ) * SIZE( grid%oa4, 2 ) .GT. 1 ) THEN CALL smoother ( & grid%oa4, & cids, cide, 1, 1, cjds, cjde, & cims, cime, 1, 1, cjms, cjme, & cips, cipe, 1, 1, cjps, cjpe, & nids, nide, 1, 1, njds, njde, & nims, nime, 1, 1, njms, njme, & nips, nipe, 1, 1, njps, njpe, & .FALSE., .FALSE., & ngrid%i_parent_start, ngrid%j_parent_start, & ngrid%parent_grid_ratio, ngrid%parent_grid_ratio & ) ENDIF IF ( SIZE( grid%ol1, 1 ) * SIZE( grid%ol1, 2 ) .GT. 1 ) THEN CALL smoother ( & grid%ol1, & cids, cide, 1, 1, cjds, cjde, & cims, cime, 1, 1, cjms, cjme, & cips, cipe, 1, 1, cjps, cjpe, & nids, nide, 1, 1, njds, njde, & nims, nime, 1, 1, njms, njme, & nips, nipe, 1, 1, njps, njpe, & .FALSE., .FALSE., & ngrid%i_parent_start, ngrid%j_parent_start, & ngrid%parent_grid_ratio, ngrid%parent_grid_ratio & ) ENDIF IF ( SIZE( grid%ol2, 1 ) * SIZE( grid%ol2, 2 ) .GT. 1 ) THEN CALL smoother ( & grid%ol2, & cids, cide, 1, 1, cjds, cjde, & cims, cime, 1, 1, cjms, cjme, & cips, cipe, 1, 1, cjps, cjpe, & nids, nide, 1, 1, njds, njde, & nims, nime, 1, 1, njms, njme, & nips, nipe, 1, 1, njps, njpe, & .FALSE., .FALSE., & ngrid%i_parent_start, ngrid%j_parent_start, & ngrid%parent_grid_ratio, ngrid%parent_grid_ratio & ) ENDIF IF ( SIZE( grid%ol3, 1 ) * SIZE( grid%ol3, 2 ) .GT. 1 ) THEN CALL smoother ( & grid%ol3, & cids, cide, 1, 1, cjds, cjde, & cims, cime, 1, 1, cjms, cjme, & cips, cipe, 1, 1, cjps, cjpe, & nids, nide, 1, 1, njds, njde, & nims, nime, 1, 1, njms, njme, & nips, nipe, 1, 1, njps, njpe, & .FALSE., .FALSE., & ngrid%i_parent_start, ngrid%j_parent_start, & ngrid%parent_grid_ratio, ngrid%parent_grid_ratio & ) ENDIF IF ( SIZE( grid%ol4, 1 ) * SIZE( grid%ol4, 2 ) .GT. 1 ) THEN CALL smoother ( & grid%ol4, & cids, cide, 1, 1, cjds, cjde, & cims, cime, 1, 1, cjms, cjme, & cips, cipe, 1, 1, cjps, cjpe, & nids, nide, 1, 1, njds, njde, & nims, nime, 1, 1, njms, njme, & nips, nipe, 1, 1, njps, njpe, & .FALSE., .FALSE., & ngrid%i_parent_start, ngrid%j_parent_start, & ngrid%parent_grid_ratio, ngrid%parent_grid_ratio & ) ENDIF IF ( SIZE( grid%ht, 1 ) * SIZE( grid%ht, 2 ) .GT. 1 ) THEN CALL smoother ( & grid%ht, & cids, cide, 1, 1, cjds, cjde, & cims, cime, 1, 1, cjms, cjme, & cips, cipe, 1, 1, cjps, cjpe, & nids, nide, 1, 1, njds, njde, & nims, nime, 1, 1, njms, njme, & nips, nipe, 1, 1, njps, njpe, & .FALSE., .FALSE., & ngrid%i_parent_start, ngrid%j_parent_start, & ngrid%parent_grid_ratio, ngrid%parent_grid_ratio & ) ENDIF DO itrace = PARAM_FIRST_SCALAR, num_tracer IF ( SIZE( tracer, 1 ) * SIZE( tracer, 3 ) .GT. 1 ) THEN CALL smoother ( & tracer(grid%sm31,grid%sm32,grid%sm33,itrace), & cids, cide, ckds, ckde, cjds, cjde, & cims, cime, ckms, ckme, cjms, cjme, & cips, cipe, ckps, MIN( (ckde-1), ckpe ), cjps, cjpe, & nids, nide, nkds, nkde, njds, njde, & nims, nime, nkms, nkme, njms, njme, & nips, nipe, nkps, MIN( (nkde-1), nkpe ), njps, njpe, & .FALSE., .FALSE., & ngrid%i_parent_start, ngrid%j_parent_start, & ngrid%parent_grid_ratio, ngrid%parent_grid_ratio & ) ENDIF ENDDO RETURN END SUBROUTINE feedback_domain_em_part2 SUBROUTINE wrf_gatherv_real (Field, field_ofst, & my_count , & globbuf, glob_ofst , & counts , & displs , & root , & communicator , & ierr ) USE module_dm, ONLY : getrealmpitype IMPLICIT NONE INTEGER field_ofst, glob_ofst INTEGER my_count, communicator, root, ierr INTEGER , DIMENSION(*) :: counts, displs REAL, DIMENSION(*) :: Field, globbuf INCLUDE 'mpif.h' CALL mpi_gatherv( Field( field_ofst ), & my_count , & getrealmpitype() , & globbuf( glob_ofst ) , & counts , & displs , & getrealmpitype() , & root , & communicator , & ierr ) END SUBROUTINE wrf_gatherv_real SUBROUTINE wrf_gatherv_double (Field, field_ofst, & my_count , & globbuf, glob_ofst , & counts , & displs , & root , & communicator , & ierr ) IMPLICIT NONE INTEGER field_ofst, glob_ofst INTEGER my_count, communicator, root, ierr INTEGER , DIMENSION(*) :: counts, displs REAL, DIMENSION(*) :: Field, globbuf INCLUDE 'mpif.h' CALL mpi_gatherv( Field( field_ofst ), & my_count , & MPI_DOUBLE_PRECISION , & globbuf( glob_ofst ) , & counts , & displs , & MPI_DOUBLE_PRECISION , & root , & communicator , & ierr ) END SUBROUTINE wrf_gatherv_double SUBROUTINE wrf_gatherv_integer (Field, field_ofst, & my_count , & globbuf, glob_ofst , & counts , & displs , & root , & communicator , & ierr ) IMPLICIT NONE INTEGER field_ofst, glob_ofst INTEGER my_count, communicator, root, ierr INTEGER , DIMENSION(*) :: counts, displs INTEGER, DIMENSION(*) :: Field, globbuf INCLUDE 'mpif.h' CALL mpi_gatherv( Field( field_ofst ), & my_count , & MPI_INTEGER , & globbuf( glob_ofst ) , & counts , & displs , & MPI_INTEGER , & root , & communicator , & ierr ) END SUBROUTINE wrf_gatherv_integer SUBROUTINE wrf_scatterv_real ( & globbuf, glob_ofst , & counts , & Field, field_ofst, & my_count , & displs , & root , & communicator , & ierr ) USE module_dm, ONLY : getrealmpitype IMPLICIT NONE INTEGER field_ofst, glob_ofst INTEGER my_count, communicator, root, ierr INTEGER , DIMENSION(*) :: counts, displs REAL, DIMENSION(*) :: Field, globbuf INCLUDE 'mpif.h' CALL mpi_scatterv( & globbuf( glob_ofst ) , & counts , & displs , & getrealmpitype() , & Field( field_ofst ), & my_count , & getrealmpitype() , & root , & communicator , & ierr ) END SUBROUTINE wrf_scatterv_real SUBROUTINE wrf_scatterv_double ( & globbuf, glob_ofst , & counts , & Field, field_ofst, & my_count , & displs , & root , & communicator , & ierr ) IMPLICIT NONE INTEGER field_ofst, glob_ofst INTEGER my_count, communicator, root, ierr INTEGER , DIMENSION(*) :: counts, displs REAL, DIMENSION(*) :: Field, globbuf INCLUDE 'mpif.h' CALL mpi_scatterv( & globbuf( glob_ofst ) , & counts , & displs , & MPI_DOUBLE_PRECISION , & Field( field_ofst ), & my_count , & MPI_DOUBLE_PRECISION , & root , & communicator , & ierr ) END SUBROUTINE wrf_scatterv_double SUBROUTINE wrf_scatterv_integer ( & globbuf, glob_ofst , & counts , & Field, field_ofst, & my_count , & displs , & root , & communicator , & ierr ) IMPLICIT NONE INTEGER field_ofst, glob_ofst INTEGER my_count, communicator, root, ierr INTEGER , DIMENSION(*) :: counts, displs INTEGER, DIMENSION(*) :: Field, globbuf INCLUDE 'mpif.h' CALL mpi_scatterv( & globbuf( glob_ofst ) , & counts , & displs , & MPI_INTEGER , & Field( field_ofst ), & my_count , & MPI_INTEGER , & root , & communicator , & ierr ) END SUBROUTINE wrf_scatterv_integer SUBROUTINE wrf_dm_gatherv ( v, elemsize , km_s, km_e, wordsz ) IMPLICIT NONE INTEGER elemsize, km_s, km_e, wordsz REAL v(*) IF ( wordsz .EQ. 8 ) THEN CALL wrf_dm_gatherv_double(v, elemsize , km_s, km_e) ELSE CALL wrf_dm_gatherv_single(v, elemsize , km_s, km_e) ENDIF END SUBROUTINE wrf_dm_gatherv SUBROUTINE wrf_dm_gatherv_double ( v, elemsize , km_s, km_e ) IMPLICIT NONE INTEGER elemsize, km_s, km_e REAL*8 v(0:*) REAL*8 v_local((km_e-km_s+1)*elemsize) INTEGER, DIMENSION(:), ALLOCATABLE :: recvcounts, displs INTEGER send_type, myproc, nproc, local_comm, ierr, i INCLUDE 'mpif.h' send_type = MPI_DOUBLE_PRECISION CALL wrf_get_dm_communicator ( local_comm ) CALL wrf_get_nproc( nproc ) CALL wrf_get_myproc( myproc ) ALLOCATE( recvcounts(nproc), displs(nproc) ) i = (km_e-km_s+1)*elemsize CALL mpi_allgather( i,1,MPI_INTEGER,recvcounts,1,MPI_INTEGER,local_comm,ierr) ; i = (km_s)*elemsize CALL mpi_allgather( i,1,MPI_INTEGER,displs,1,MPI_INTEGER,local_comm,ierr) ; DO i = 1,elemsize*(km_e-km_s+1) v_local(i) = v(i+elemsize*km_s-1) ENDDO CALL mpi_allgatherv( v_local, & (km_e-km_s+1)*elemsize, & send_type, & v, & recvcounts, & displs, & send_type, & local_comm, & ierr ) DEALLOCATE(recvcounts) DEALLOCATE(displs) return END SUBROUTINE wrf_dm_gatherv_double SUBROUTINE wrf_dm_gatherv_single ( v, elemsize , km_s, km_e ) IMPLICIT NONE INTEGER elemsize, km_s, km_e REAL*4 v(0:*) REAL*4 v_local((km_e-km_s+1)*elemsize) INTEGER, DIMENSION(:), ALLOCATABLE :: recvcounts, displs INTEGER send_type, myproc, nproc, local_comm, ierr, i INCLUDE 'mpif.h' send_type = MPI_REAL CALL wrf_get_dm_communicator ( local_comm ) CALL wrf_get_nproc( nproc ) CALL wrf_get_myproc( myproc ) ALLOCATE( recvcounts(nproc), displs(nproc) ) i = (km_e-km_s+1)*elemsize CALL mpi_allgather( i,1,MPI_INTEGER,recvcounts,1,MPI_INTEGER,local_comm,ierr) ; i = (km_s)*elemsize CALL mpi_allgather( i,1,MPI_INTEGER,displs,1,MPI_INTEGER,local_comm,ierr) ; DO i = 1,elemsize*(km_e-km_s+1) v_local(i) = v(i+elemsize*km_s-1) ENDDO CALL mpi_allgatherv( v_local, & (km_e-km_s+1)*elemsize, & send_type, & v, & recvcounts, & displs, & send_type, & local_comm, & ierr ) DEALLOCATE(recvcounts) DEALLOCATE(displs) return END SUBROUTINE wrf_dm_gatherv_single SUBROUTINE wrf_dm_decomp1d( nt, km_s, km_e ) IMPLICIT NONE INTEGER, INTENT(IN) :: nt INTEGER, INTENT(OUT) :: km_s, km_e INTEGER nn, nnp, na, nb INTEGER myproc, nproc CALL wrf_get_myproc(myproc) CALL wrf_get_nproc(nproc) nn = nt / nproc nnp = nn if ( myproc .lt. mod( nt, nproc ) ) nnp = nnp + 1 na = min( myproc, mod(nt,nproc) ) nb = max( 0, myproc - na ) km_s = na * ( nn+1) + nb * nn km_e = km_s + nnp - 1 END SUBROUTINE wrf_dm_decomp1d SUBROUTINE wrf_dm_define_comms ( grid ) USE module_domain, ONLY : domain IMPLICIT NONE TYPE(domain) , INTENT (INOUT) :: grid RETURN END SUBROUTINE wrf_dm_define_comms SUBROUTINE tfp_message( fname, lno ) CHARACTER*(*) fname INTEGER lno CHARACTER*1024 mess WRITE(mess,*)'tfp_message: ',trim(fname),lno CALL wrf_message(mess) CALL wrf_error_fatal3("",18459,& mess) END SUBROUTINE tfp_message SUBROUTINE set_dm_debug USE module_dm, ONLY : dm_debug_flag IMPLICIT NONE dm_debug_flag = .TRUE. END SUBROUTINE set_dm_debug SUBROUTINE reset_dm_debug USE module_dm, ONLY : dm_debug_flag IMPLICIT NONE dm_debug_flag = .FALSE. END SUBROUTINE reset_dm_debug SUBROUTINE get_dm_debug ( arg ) USE module_dm, ONLY : dm_debug_flag IMPLICIT NONE LOGICAL arg arg = dm_debug_flag END SUBROUTINE get_dm_debug