--- trunk/libf/dyn3d/grid_change.f90 2008/02/27 13:16:39 3 +++ trunk/Sources/dyn3d/grid_change.f 2015/09/09 10:41:47 168 @@ -28,11 +28,11 @@ function gr_fi_dyn(pfi) ! From gr_fi_dyn.F, version 1.1.1.1 2004/05/19 12:53:05 - ! Passage d'un champ de la grille physique à la grille dynamique + ! Passage d'un champ de la grille physique \`a la grille dynamique use dimphy, only: klon - REAL, intent(in):: pfi(:) + REAL, intent(in):: pfi(:) ! (klon) real gr_fi_dyn(iim + 1, jjm + 1) ! Variable local to the procedure: @@ -42,7 +42,7 @@ if (size(pfi) /= klon) stop "gr_fi_dyn" - ! Traitement des pôles : + ! Traitement des p\^oles : field(2:, 1) = pfi(1) field(2:, jjm + 1) = pfi(klon) ! (We leave undefined elements in "field") @@ -57,31 +57,51 @@ !******************************************** - function gr_phy_write(pfi) + function gr_phy_write_2d(pfi) ! From phylmd/physiq.F, version 1.22 2006/02/20 09:38:28 - ! Transforme une variable de la grille physique à la grille d'écriture. + ! Transforme une variable de la grille physique \`a la grille d'\'ecriture. ! The grid for output files does not duplicate the first longitude ! in the last longitude. use dimphy, only: klon - REAL, intent(in):: pfi(:) - real gr_phy_write(iim, jjm + 1) + REAL, intent(in):: pfi(:) ! (klon) + real gr_phy_write_2d(iim, jjm + 1) ! Variable local to the procedure: real field(iim, jjm + 1) !----------------------------------------------------------------------- - if (size(pfi) /= klon) stop "gr_phy_write" + if (size(pfi) /= klon) stop "gr_phy_write_2d" - ! Traitement des pôles : + ! Traitement des p\^oles : field(2:, 1) = pfi(1) field(2:, jjm + 1) = pfi(klon) - gr_phy_write = unpack(pfi, dyn_phy(:iim, :), field) + gr_phy_write_2d = unpack(pfi, dyn_phy(:iim, :), field) - END function gr_phy_write + END function gr_phy_write_2d + + !******************************************** + + function gr_dyn_phy(v) + + ! Passage d'un champ 3D de la grille dynamique \`a la grille physique + + use dimphy, only: klon + + REAL, intent(in):: v(:, :, :) ! (iim + 1, jjm + 1, :) + real gr_dyn_phy(klon, size(v, 3)) + + ! Local: + integer k + + !----------------------------------------------------------------------- + + forall (k = 1:size(v, 3)) gr_dyn_phy(:, k) = pack(v(:, :, k), dyn_phy) + + END function gr_dyn_phy end module grid_change