source: LMDZ5/trunk/libf/phylmd/readchlorophyll.F90 @ 2227

Last change on this file since 2227 was 2227, checked in by Laurent Fairhead, 9 years ago

New ocean albedo.

To activate the new scheme, put iflag_albedo=1 in physiq.def

To activate chlorophyll concentration effect on albedo,
put ok_chlorophyll=y in def file

and download file named chlorophyll.nc
chlorophyll.nc has the same dimension as the model grid with 12 months data,
(i=lon, j=lat, L=1:12) and can be degraded from the original file of dimension
i=1:4320 , j=1:2160 , L=1:12
ada:/workgpfs/rech/psl/rpsl949/clima/chlor_seasonal_clim_seawifs.nc

For 96X96 resolution, chlorophyll.nc file is in
ada:/workgpfs/rech/psl/rpsl949/clima/chlorophyll.nc

  1. Baek
File size: 3.5 KB
Line 
1!
2! $Id$
3!
4
5subroutine readchlorophyll(debut)
6
7    use netcdf95, only: nf95_close, nf95_gw_var, nf95_inq_dimid, &
8                        nf95_inq_varid, nf95_open
9    use netcdf, only: nf90_get_var, nf90_noerr, nf90_nowrite
10
11    USE phys_cal_mod, ONLY : mth_cur
12    USE mod_grid_phy_lmdz
13    USE mod_phys_lmdz_mpi_data, ONLY :  is_mpi_root
14    USE mod_phys_lmdz_para
15    USE phys_state_var_mod
16    USE phys_local_var_mod
17    USE dimphy
18
19    implicit none
20
21    include "YOMCST.h"
22    include "dimensions.h"
23
24! Variable input
25    logical debut
26
27! Variables locales
28    integer n_lat   ! number of latitudes in the input data
29    integer n_lon   ! number of longitudes in the input data
30    integer n_lev   ! number of levels in the input data
31    integer n_month ! number of months in the input data
32    real, pointer:: latitude(:)
33    real, pointer:: longitude(:)
34    real, pointer:: time(:)
35    integer i, k
36    integer, save :: mth_pre
37!$OMP THREADPRIVATE(mth_pre)
38
39! Champs reconstitues
40    real, allocatable:: chlorocon(:, :, :)
41    real, allocatable:: chlorocon_mois(:, :)
42    real, allocatable:: chlorocon_mois_glo(:)
43
44! For NetCDF:
45    integer ncid_in  ! IDs for input files
46    integer varid, ncerr
47
48
49!--------------------------------------------------------
50
51
52!--only read file if beginning of run or start of new month
53    IF (debut.OR.mth_cur.NE.mth_pre) THEN
54
55    IF (is_mpi_root) THEN
56
57
58    CALL nf95_open("chlorophyll.nc", nf90_nowrite, ncid_in)
59
60    CALL nf95_inq_varid(ncid_in, "lon", varid)
61    CALL nf95_gw_var(ncid_in, varid, longitude)
62    n_lon = size(longitude)
63!    print *, 'LON chlorophyll=', n_lon, longitude
64    IF (n_lon.NE.iim) THEN
65       print *,'Le nombre de lon n est pas egal a iim'
66       STOP
67    ENDIF
68
69
70    CALL nf95_inq_varid(ncid_in, "lat", varid)
71    CALL nf95_gw_var(ncid_in, varid, latitude)
72    n_lat = size(latitude)
73!    print *, 'LAT chlorophyll=', n_lat, latitude
74    IF (n_lat.NE.jjm+1) THEN
75       print *,'Le nombre de lat n est pas egal a jjm+1'
76       STOP
77    ENDIF
78
79    CALL nf95_inq_varid(ncid_in, "time", varid)
80    CALL nf95_gw_var(ncid_in, varid, time)
81    n_month = size(time)
82!    print *, 'TIME aerosol strato=', n_month, time
83    IF (n_month.NE.12) THEN
84       print *,'Le nombre de month n est pas egal a 12'
85       STOP
86    ENDIF
87
88    IF (.not.ALLOCATED(chlorocon))          ALLOCATE(chlorocon(n_lon, n_lat, n_month))
89    IF (.not.ALLOCATED(chlorocon_mois))     ALLOCATE(chlorocon_mois(n_lon, n_lat))
90    IF (.not.ALLOCATED(chlorocon_mois_glo)) ALLOCATE(chlorocon_mois_glo(klon_glo))
91
92!--reading stratospheric AOD at 550 nm
93    CALL nf95_inq_varid(ncid_in, "CHL", varid)
94    ncerr = nf90_get_var(ncid_in, varid, chlorocon)
95    print *,'code erreur readaerosolstrato=', ncerr, varid
96
97    CALL nf95_close(ncid_in)
98
99!---select the correct month
100    IF (mth_cur.LT.1.OR.mth_cur.GT.12) THEN
101      print *,'probleme avec le mois dans readaerosolstrat =', mth_cur
102    ENDIF
103    chlorocon_mois(:,:) = chlorocon(:,:,mth_cur)
104
105!---reduce to a klon_glo grid
106    CALL grid2dTo1d_glo(chlorocon_mois,chlorocon_mois_glo)
107
108
109    print*,"chrolophyll current month",mth_cur
110    do i=1,klon_glo
111      if(isnan(chlorocon_mois_glo(i)))then
112         chlorocon_mois_glo(i)=0.
113      endif
114      !print*,"high chl con",i,chlorocon_mois_glo(i)
115    enddo
116
117!    DEALLOCATE(chlorocon)
118!    DEALLOCATE(chlorocon_mois)
119!    DEALLOCATE(chlorocon_mois_glo)
120 
121    ENDIF !--is_mpi_root
122
123!--scatter on all proc
124    CALL scatter(chlorocon_mois_glo,chl_con)
125
126!--keep memory of previous month
127    mth_pre=mth_cur
128
129    ENDIF !--debut ou nouveau mois
130
131end subroutine readchlorophyll
Note: See TracBrowser for help on using the repository browser.