!----------------------------------------------------------------------- !BOP ! !ROUTINE: diag_dynvar_ic --- record state variables to IC file ! ! !INTERFACE: subroutine diag_dynvar_ic(grid, phis, ps, t3, u3s, v3s, tracer) 1,10 ! !USES: use shr_kind_mod , only: r8 => shr_kind_r8 use cam_history , only: outfld, write_inithist use constituents , only: cnst_name use dynamics_vars, only: T_FVDYCORE_GRID implicit none ! !----------------------------------------------------------------------- ! ! !INPUT PARAMETERS: ! type (T_FVDYCORE_GRID), intent(in) :: grid ! surface geopotential (grav*zs) real(r8), intent(in) :: phis(grid%ifirstxy:grid%ilastxy, & grid%jfirstxy:grid%jlastxy) ! Surface pressure (pa) real(r8), intent(in) :: ps (grid%ifirstxy:grid%ilastxy, & grid%jfirstxy:grid%jlastxy) ! Temperature (K) real(r8), intent(in) :: t3 (grid%ifirstxy:grid%ilastxy, & grid%jfirstxy:grid%jlastxy, grid%km ) ! u wind velocities, staggered grid real(r8), intent(in) :: u3s (grid%ifirstxy:grid%ilastxy, & grid%jfirstxy:grid%jlastxy, grid%km) ! v wind velocities, staggered grid real(r8), intent(in) :: v3s (grid%ifirstxy:grid%ilastxy, & grid%jfirstxy:grid%jlastxy, grid%km) ! Tracers real(r8), intent(in) :: tracer (grid%ifirstxy:grid%ilastxy, & grid%jfirstxy:grid%jlastxy, & grid%km,grid%ntotq) ! !HISTORY: ! 01.01.01 XXXXXX Delivery ! 05.07.12 Sawyer Simplified interface with grid argument, ProTeX ! 06.03.22 Sawyer Rewritten for XY decomposition ! 06.06.28 Sawyer T3 changed from IKJ to IJK indexing ! 06.07.01 Sawyer Transitioned tracers q3 to T_TRACERS ! !EOP !----------------------------------------------------------------------- !BOC !---------------------------Local workspace----------------------------- integer :: i, j, k, m ! indices integer :: ifirstxy, ilastxy, jfirstxy, jlastxy, km, ntotq, idim real(r8):: tmp(grid%ifirstxy:grid%ilastxy,grid%km) ! !----------------------------------------------------------------------- ! ifirstxy = grid%ifirstxy ilastxy = grid%ilastxy jfirstxy = grid%jfirstxy jlastxy = grid%jlastxy km = grid%km ntotq = grid%ntotq idim = ilastxy - ifirstxy + 1 if( write_inithist() ) then !$OMP PARALLEL DO PRIVATE (I, J, K, M, TMP) do j = jfirstxy, jlastxy call outfld ('PS&IC ', ps (:,j) , idim, j) do k = 1, km do i = ifirstxy, ilastxy tmp(i,k) = t3(i,j,k) enddo enddo call outfld ('T&IC ', tmp , idim, j) do k = 1, km do i = ifirstxy, ilastxy tmp(i,k) = u3s(i,j,k) enddo enddo call outfld ('US&IC ', tmp , idim, j) do k = 1, km do i = ifirstxy, ilastxy tmp(i,k) = v3s(i,j,k) enddo enddo call outfld ('VS&IC ', tmp , idim, j) do m = 1, ntotq do k = 1, km do i = ifirstxy, ilastxy tmp(i,k) = tracer(i,j,k,m) enddo enddo call outfld(trim(cnst_name(m))//'&IC' , tmp , idim, j) end do enddo end if return !EOC end subroutine diag_dynvar_ic