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

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

Implementation of the Spectral Albedo

File size: 2.9 KB
RevLine 
[1482]1      SUBROUTINE surfini(ngrid,nq,qsurf,albedo,albedo_bareground,
2     &                   albedo_snow_SPECTV,albedo_co2_ice_SPECTV)
[787]3
[1482]4      USE surfdat_h, only: albedodat
[1216]5      USE tracer_h, only: igcm_co2_ice
6      use planetwide_mod, only: planetwide_maxval, planetwide_minval
[1482]7      use radinc_h, only : L_NSPECTV
8      use callkeys_mod, only : albedosnow, albedoco2ice
[787]9
[135]10      IMPLICIT NONE
[1482]11     
12     
13ccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccc
14cccccccccccccc                                                                 cccccccccccccc
15cccccccccccccc   Spectral Albedo Initialisation - Routine modified by MT2015.  cccccccccccccc
16cccccccccccccc                                                                 cccccccccccccc
17ccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccc
18
19
20c--------------------
[135]21c   Declarations:
[1482]22c--------------------
23
[1216]24      INTEGER,INTENT(IN) :: ngrid
25      INTEGER,INTENT(IN) :: nq
[1482]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)
[135]31
[1482]32      INTEGER :: ig,nw
[1216]33      REAL :: min_albedo,max_albedo
[1482]34
[135]35c=======================================================================
36
[1482]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
[135]42
[1482]43
44      ! Step 2 : We get the bare ground albedo from the start files.
[135]45      DO ig=1,ngrid
[1482]46         albedo_bareground(ig)=albedodat(ig)
47         DO nw=1,L_NSPECTV
48            albedo(ig,nw)=albedo_bareground(ig)
49         ENDDO
[135]50      ENDDO
[1482]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
[135]55
56
[1482]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) ...
[135]58      if (igcm_co2_ice.ne.0) then
[1482]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   
[135]66      else
[1482]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
[135]74
75
76      END
Note: See TracBrowser for help on using the repository browser.