source: trunk/LMDZ.GENERIC/libf/phystd/surfini.F @ 1834

Last change on this file since 1834 was 1482, checked in by mturbet, 9 years ago

Implementation of the Spectral Albedo

File size: 2.9 KB
Line 
1      SUBROUTINE surfini(ngrid,nq,qsurf,albedo,albedo_bareground,
2     &                   albedo_snow_SPECTV,albedo_co2_ice_SPECTV)
3
4      USE surfdat_h, only: albedodat
5      USE tracer_h, only: igcm_co2_ice
6      use planetwide_mod, only: planetwide_maxval, planetwide_minval
7      use radinc_h, only : L_NSPECTV
8      use callkeys_mod, only : albedosnow, albedoco2ice
9
10      IMPLICIT NONE
11     
12     
13ccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccc
14cccccccccccccc                                                                 cccccccccccccc
15cccccccccccccc   Spectral Albedo Initialisation - Routine modified by MT2015.  cccccccccccccc
16cccccccccccccc                                                                 cccccccccccccc
17ccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccc
18
19
20c--------------------
21c   Declarations:
22c--------------------
23
24      INTEGER,INTENT(IN) :: ngrid
25      INTEGER,INTENT(IN) :: nq
26      REAL,INTENT(OUT) :: albedo(ngrid,L_NSPECTV)
27      REAL,INTENT(OUT) :: albedo_bareground(ngrid)
28      REAL,INTENT(OUT) :: albedo_snow_SPECTV(L_NSPECTV)
29      REAL,INTENT(OUT) :: albedo_co2_ice_SPECTV(L_NSPECTV)
30      REAL,INTENT(IN) :: qsurf(ngrid,nq) ! tracer on surface (kg/m2)
31
32      INTEGER :: ig,nw
33      REAL :: min_albedo,max_albedo
34
35c=======================================================================
36
37      ! Step 1 : Initialisation of the Spectral Albedos.
38      DO nw=1,L_NSPECTV
39         albedo_snow_SPECTV(nw)=albedosnow
40         albedo_co2_ice_SPECTV(nw)=albedoco2ice
41      ENDDO
42
43
44      ! Step 2 : We get the bare ground albedo from the start files.
45      DO ig=1,ngrid
46         albedo_bareground(ig)=albedodat(ig)
47         DO nw=1,L_NSPECTV
48            albedo(ig,nw)=albedo_bareground(ig)
49         ENDDO
50      ENDDO
51      call planetwide_minval(albedo_bareground,min_albedo)
52      call planetwide_maxval(albedo_bareground,max_albedo)
53      write(*,*) 'surfini: minimum bare ground albedo',min_albedo
54      write(*,*) 'surfini: maximum bare ground albedo',max_albedo
55
56
57      ! Step 3 : We modify the albedo considering some CO2 at the surface. We dont take into account water ice (this is made in hydrol after the first timestep) ...
58      if (igcm_co2_ice.ne.0) then
59         DO ig=1,ngrid
60            IF (qsurf(ig,igcm_co2_ice) .GT. 1.) THEN ! This was changed by MT2015. Condition for ~1mm of CO2 ice deposit.
61               DO nw=1,L_NSPECTV
62                  albedo(ig,nw)=albedo_co2_ice_SPECTV(nw)
63               ENDDO
64            END IF   
65         ENDDO   
66      else
67         write(*,*) "surfini: No CO2 ice tracer on surface  ..."
68         write(*,*) "         and therefore no albedo change."
69      endif     
70      call planetwide_minval(albedo,min_albedo)
71      call planetwide_maxval(albedo,max_albedo)
72      write(*,*) 'surfini: minimum corrected initial albedo',min_albedo
73      write(*,*) 'surfini: maximum corrected initial albedo',max_albedo
74
75
76      END
Note: See TracBrowser for help on using the repository browser.