--- trunk/libf/dyn3d/grid_change.f90 2008/08/01 15:24:12 15 +++ 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") @@ -60,13 +60,13 @@ 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, intent(in):: pfi(:) ! (klon) real gr_phy_write_2d(iim, jjm + 1) ! Variable local to the procedure: @@ -76,7 +76,7 @@ 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) @@ -84,33 +84,24 @@ END function gr_phy_write_2d - !*************************************************** + !******************************************** - function gr_phy_write_3d(pfi) + function gr_dyn_phy(v) - ! Transforme une variable dépendant de la position verticale de la - ! grille physique à la grille d'écriture. - ! The grid for output files does not duplicate the first longitude - ! in the last longitude. + ! Passage d'un champ 3D de la grille dynamique \`a la grille physique use dimphy, only: klon - use dimens_m, only: llm - use numer_rec, only: assert - REAL, intent(in):: pfi(:, :) - real gr_phy_write_3d(iim, jjm + 1, llm) + REAL, intent(in):: v(:, :, :) ! (iim + 1, jjm + 1, :) + real gr_dyn_phy(klon, size(v, 3)) - ! Variable local to the procedure: - integer l + ! Local: + integer k !----------------------------------------------------------------------- - call assert(shape(pfi) == (/klon, llm/), "gr_phy_write_3d") - - do l = 1, llm - gr_phy_write_3d(:, :, l) = gr_phy_write_2d(pfi(:, l)) - end do + forall (k = 1:size(v, 3)) gr_dyn_phy(:, k) = pack(v(:, :, k), dyn_phy) - END function gr_phy_write_3d + END function gr_dyn_phy end module grid_change