Ignore:
Timestamp:
Apr 22, 2015, 6:28:50 PM (10 years ago)
Author:
ymipsl
Message:

Removed all iim et jjm depedency. Replaced by nbp_lon and nbp_lat.
Supress gr_fi_ecrit, replaced by grid1dTo2d_glo

YM

File:
1 edited

Legend:

Unmodified
Added
Removed
  • dynamico_lmdz/aquaplanet/LMDZ5/libf/phylmd/regr_pr_o3_m.F90

    r3816 r3819  
    2525    ! hPa and strictly increasing.
    2626
     27    use dimphy, ONLY : klon, klev
     28    use mod_grid_phy_lmdz, ONLY : nbp_lon, nbp_lat
    2729    use netcdf95, only: nf95_open, nf95_close, nf95_inq_varid, handle_err
    2830    use netcdf, only:  nf90_nowrite, nf90_get_var
     
    3739    ! for interface "l")
    3840
    39     real, intent(out):: o3_mob_regr(:, :, :) ! (iim + 1, jjm + 1, llm)
     41    real, intent(out):: o3_mob_regr(:, :, :) ! (nbp_lon + 1, nbp_lat + 1, klev)
    4042    ! (ozone mole fraction from Mobidic adapted to the LMDZ grid)
    4143    ! ("o3_mob_regr(i, j, l)" is at longitude "rlonv(i)", latitude
     
    4446    ! Variables local to the procedure:
    4547
    46     include "dimensions.h"
    4748
    4849    integer ncid, varid, ncerr ! for NetCDF
    4950    integer i, j
    5051
    51     real r_mob(jjm + 1, size(press_in_edg) - 1)
     52    real r_mob(nbp_lat, size(press_in_edg) - 1)
    5253    ! (ozone mole fraction from Mobidic at day "dayref")
    5354    ! (r_mob(j, k) is at latitude "rlatu(j)", in pressure interval
     
    5758
    5859    print *, "Call sequence information: regr_pr_o3"
    59     call assert(shape(o3_mob_regr) == (/iim + 1, jjm + 1, llm/), &
     60    call assert(shape(o3_mob_regr) == (/nbp_lon + 1, nbp_lat, klev/), &
    6061         "regr_pr_o3 o3_mob_regr")
    61     call assert(shape(p3d) == (/iim + 1, jjm + 1, llm + 1/), "regr_pr_o3 p3d")
     62    call assert(shape(p3d) == (/nbp_lon + 1, nbp_lat, klev + 1/), "regr_pr_o3 p3d")
    6263
    6364    call nf95_open("coefoz_LMDZ.nc", nf90_nowrite, ncid)
     
    6970    ! Latitudes are in ascending order in the input file while
    7071    ! "rlatu" is in descending order so we need to invert order:
    71     r_mob = r_mob(jjm+1:1:-1, :)
     72    r_mob = r_mob(nbp_lat:1:-1, :)
    7273
    7374    call nf95_close(ncid)
     
    7677
    7778    ! Poles:
    78     do j = 1, jjm + 1, jjm
    79        o3_mob_regr(1, j, llm:1:-1) &
    80             = regr1_step_av(r_mob(j, :), press_in_edg, p3d(1, j, llm+1:1:-1))
     79    do j = 1, nbp_lat, nbp_lat-1
     80       o3_mob_regr(1, j, klev:1:-1) &
     81            = regr1_step_av(r_mob(j, :), press_in_edg, p3d(1, j, klev+1:1:-1))
    8182       ! (invert order of indices because "p3d" is in descending order)
    8283    end do
    8384
    8485    ! Other latitudes:
    85     do j = 2, jjm
    86        do i = 1, iim
    87           o3_mob_regr(i, j, llm:1:-1) &
     86    do j = 2, nbp_lat-1
     87       do i = 1, nbp_lon
     88          o3_mob_regr(i, j, klev:1:-1) &
    8889               = regr1_step_av(r_mob(j, :), press_in_edg, &
    89                p3d(i, j, llm+1:1:-1))
     90               p3d(i, j, klev+1:1:-1))
    9091             ! (invert order of indices because "p3d" is in descending order)
    9192       end do
     
    9394
    9495    ! Duplicate pole values on all longitudes:
    95     o3_mob_regr(2:, 1, :) = spread(o3_mob_regr(1, 1, :), dim=1, ncopies=iim)
    96     o3_mob_regr(2:, jjm + 1, :) &
    97          = spread(o3_mob_regr(1, jjm + 1, :), dim=1, ncopies=iim)
     96    o3_mob_regr(2:, 1, :) = spread(o3_mob_regr(1, 1, :), dim=1, ncopies=nbp_lon)
     97    o3_mob_regr(2:, nbp_lat, :) &
     98         = spread(o3_mob_regr(1, nbp_lat, :), dim=1, ncopies=nbp_lon)
    9899
    99100    ! Duplicate first longitude to last longitude:
    100     o3_mob_regr(iim + 1, 2:jjm, :) = o3_mob_regr(1, 2:jjm, :)
     101    o3_mob_regr(nbp_lon + 1, 2:nbp_lat-1, :) = o3_mob_regr(1, 2:nbp_lat-1, :)
    101102
    102103  end subroutine regr_pr_o3
Note: See TracChangeset for help on using the changeset viewer.