source: LMDZ6/trunk/libf/phylmdiso/surf_landice_mod.F90 @ 4160

Last change on this file since 4160 was 4143, checked in by dcugnet, 3 years ago
  • Some variables are renamed or replaced by direct equivalents:
    • iso_indnum -> tracers(:)%iso_iName
    • niso_possibles -> niso
    • iqiso -> iqIsoPha ; index_trac -> itZonIso
    • ok_iso_verif -> isoCheck
    • ntraceurs_zone -> nzone ; ntraciso -> ntiso
    • qperemin -> min_qparent ; masseqmin -> min_qmass ; ratiomin -> min_ratio
  • Some renamed variables are only aliased with the older name (using USE <module>, ONLY: <oldName> => <newName>) in routines where they are repeated many times.
  • Few hard-coded indexes are now computed (examples: ilic, iso, ivap, irneb, iq_vap, iq_liq, iso_H2O, iso_HDO, iso_HTO, iso_O17, iso_O18).
  • The IF(isoCheck) test is now embedded in the check_isotopes_seq and check_isotopes_loc routines (lighter calling).
File size: 19.9 KB
Line 
1!
2MODULE surf_landice_mod
3 
4  IMPLICIT NONE
5
6CONTAINS
7!
8!****************************************************************************************
9!
10  SUBROUTINE surf_landice(itime, dtime, knon, knindex, &
11       rlon, rlat, debut, lafin, &
12       rmu0, lwdownm, albedo, pphi1, &
13       swnet, lwnet, tsurf, p1lay, &
14       cdragh, cdragm, precip_rain, precip_snow, temp_air, spechum, &
15       AcoefH, AcoefQ, BcoefH, BcoefQ, &
16       AcoefU, AcoefV, BcoefU, BcoefV, &
17       ps, u1, v1, gustiness, rugoro, pctsrf, &
18       snow, qsurf, qsol, agesno, &
19       tsoil, z0m, z0h, SFRWL, alb_dir, alb_dif, evap, fluxsens, fluxlat, &
20       tsurf_new, dflux_s, dflux_l, &
21       alt, slope, cloudf, &
22       snowhgt, qsnow, to_ice, sissnow, &
23       alb3, runoff, &
24       flux_u1, flux_v1 &
25#ifdef ISO
26         &      ,xtprecip_rain, xtprecip_snow,xtspechum,Rland_ice &
27         &      ,xtsnow,xtsol,xtevap &
28#endif               
29           &    )
30
31    USE dimphy
32    USE surface_data,     ONLY : type_ocean, calice, calsno, landice_opt, iflag_albcalc
33    USE fonte_neige_mod,  ONLY : fonte_neige,run_off_lic,fqcalving_global,ffonte_global,fqfonte_global,runofflic_global
34    USE cpl_mod,          ONLY : cpl_send_landice_fields
35    USE calcul_fluxs_mod
36    USE phys_output_var_mod
37#ifdef ISO   
38    USE fonte_neige_mod,  ONLY : xtrun_off_lic
39    USE infotrac_phy, ONLY : ntiso,niso
40    USE isotopes_routines_mod, ONLY: calcul_iso_surf_lic_vectall
41#ifdef ISOVERIF
42    use isotopes_mod, ONLY: iso_eau,ridicule
43    use isotopes_verif_mod
44#endif
45#endif
46    USE geometry_mod,     ONLY : longitude,latitude
47
48!FC
49    USE ioipsl_getin_p_mod, ONLY : getin_p
50
51
52#ifdef CPP_INLANDSIS
53    USE surf_inlandsis_mod,  ONLY : surf_inlandsis
54#endif
55
56    USE indice_sol_mod
57
58
59!    INCLUDE "indicesol.h"
60    INCLUDE "dimsoil.h"
61    INCLUDE "YOMCST.h"
62    INCLUDE "clesphys.h"
63
64! Input variables
65!****************************************************************************************
66    INTEGER, INTENT(IN)                           :: itime, knon
67    INTEGER, DIMENSION(klon), INTENT(in)          :: knindex
68    REAL, INTENT(in)                              :: dtime
69    REAL, DIMENSION(klon), INTENT(IN)             :: swnet ! net shortwave radiance
70    REAL, DIMENSION(klon), INTENT(IN)             :: lwnet ! net longwave radiance
71    REAL, DIMENSION(klon), INTENT(IN)             :: tsurf
72    REAL, DIMENSION(klon), INTENT(IN)             :: p1lay
73    REAL, DIMENSION(klon), INTENT(IN)             :: cdragh, cdragm
74    REAL, DIMENSION(klon), INTENT(IN)             :: precip_rain, precip_snow
75    REAL, DIMENSION(klon), INTENT(IN)             :: temp_air, spechum
76    REAL, DIMENSION(klon), INTENT(IN)             :: AcoefH, AcoefQ
77    REAL, DIMENSION(klon), INTENT(IN)             :: BcoefH, BcoefQ
78    REAL, DIMENSION(klon), INTENT(IN)             :: AcoefU, AcoefV, BcoefU, BcoefV
79    REAL, DIMENSION(klon), INTENT(IN)             :: ps
80    REAL, DIMENSION(klon), INTENT(IN)             :: u1, v1, gustiness
81    REAL, DIMENSION(klon), INTENT(IN)             :: rugoro
82    REAL, DIMENSION(klon,nbsrf), INTENT(IN)       :: pctsrf
83#ifdef ISO
84    REAL, DIMENSION(ntiso,klon), INTENT(IN)       :: xtprecip_rain, xtprecip_snow
85    REAL, DIMENSION(ntiso,klon), INTENT(IN)       :: xtspechum
86#endif
87
88    LOGICAL,  INTENT(IN)                          :: debut   !true if first step
89    LOGICAL,  INTENT(IN)                          :: lafin   !true if last step
90    REAL, DIMENSION(klon), INTENT(IN)             :: rlon, rlat
91    REAL, DIMENSION(klon), INTENT(IN)             :: rmu0
92    REAL, DIMENSION(klon), INTENT(IN)             :: lwdownm !ylwdown
93    REAL, DIMENSION(klon), INTENT(IN)             :: albedo  !mean albedo
94    REAL, DIMENSION(klon), INTENT(IN)             :: pphi1   
95    REAL, DIMENSION(klon), INTENT(IN)             :: alt   !mean altitude of the grid box 
96    REAL, DIMENSION(klon), INTENT(IN)             :: slope   !mean slope in grid box 
97    REAL, DIMENSION(klon), INTENT(IN)             :: cloudf  !total cloud fraction
98
99! In/Output variables
100!****************************************************************************************
101    REAL, DIMENSION(klon), INTENT(INOUT)          :: snow, qsol
102    REAL, DIMENSION(klon), INTENT(INOUT)          :: agesno
103    REAL, DIMENSION(klon, nsoilmx), INTENT(INOUT) :: tsoil
104#ifdef ISO
105    REAL, DIMENSION(niso,klon), INTENT(INOUT)          :: xtsnow, xtsol
106    REAL, DIMENSION(niso,klon), INTENT(INOUT)        :: Rland_ice
107#endif
108
109! Output variables
110!****************************************************************************************
111    REAL, DIMENSION(klon), INTENT(OUT)            :: qsurf
112    REAL, DIMENSION(klon), INTENT(OUT)            :: z0m, z0h
113!albedo SB >>>
114!    REAL, DIMENSION(klon), INTENT(OUT)            :: alb1  ! new albedo in visible SW interval
115!    REAL, DIMENSION(klon), INTENT(OUT)            :: alb2  ! new albedo in near IR interval
116    REAL, DIMENSION(6), INTENT(IN)                :: SFRWL
117    REAL, DIMENSION(klon,nsw), INTENT(OUT)        :: alb_dir,alb_dif
118!albedo SB <<<
119    REAL, DIMENSION(klon), INTENT(OUT)            :: evap, fluxsens, fluxlat
120    REAL, DIMENSION(klon), INTENT(OUT)            :: tsurf_new
121    REAL, DIMENSION(klon), INTENT(OUT)            :: dflux_s, dflux_l     
122    REAL, DIMENSION(klon), INTENT(OUT)            :: flux_u1, flux_v1
123
124    REAL, DIMENSION(klon), INTENT(OUT)           :: alb3
125    REAL, DIMENSION(klon), INTENT(OUT)           :: qsnow   !column water in snow [kg/m2]
126    REAL, DIMENSION(klon), INTENT(OUT)           :: snowhgt !Snow height (m)
127    REAL, DIMENSION(klon), INTENT(OUT)           :: to_ice
128    REAL, DIMENSION(klon), INTENT(OUT)           :: sissnow
129    REAL, DIMENSION(klon), INTENT(OUT)           :: runoff  !Land ice runoff
130#ifdef ISO
131    REAL, DIMENSION(ntiso,klon), INTENT(OUT)     :: xtevap     
132!    real, DIMENSION(niso,klon) :: xtrun_off_lic_0_diag ! est une variable globale de
133!    fonte_neige
134#endif
135 
136
137! Local variables
138!****************************************************************************************
139    REAL, DIMENSION(klon)    :: soilcap, soilflux
140    REAL, DIMENSION(klon)    :: cal, beta, dif_grnd
141    REAL, DIMENSION(klon)    :: zfra, alb_neig
142    REAL, DIMENSION(klon)    :: radsol
143    REAL, DIMENSION(klon)    :: u0, v0, u1_lay, v1_lay, ustar
144    INTEGER                  :: i,j,nt
145    REAL, DIMENSION(klon)    :: fqfonte,ffonte
146#ifdef ISO       
147      real, parameter :: t_coup = 273.15
148      real, dimension(klon) :: fqfonte_diag
149      real, dimension(klon) :: fq_fonte_diag
150      real, dimension(klon) ::  snow_evap_diag
151      real, dimension(klon) ::  fqcalving_diag
152      real max_eau_sol_diag 
153      real, dimension(klon) ::  runoff_diag
154      real, dimension(klon) ::    run_off_lic_diag
155      real ::  coeff_rel_diag
156      integer ixt
157      REAL, DIMENSION(niso,klon) :: xtsnow_prec,xtsol_prec
158      REAL, DIMENSION(klon) :: snow_prec,qsol_prec
159!      real, DIMENSION(klon) :: run_off_lic_0_diag
160#endif
161
162    REAL, DIMENSION(klon)    :: emis_new                  !Emissivity
163    REAL, DIMENSION(klon)    :: swdown,lwdown
164    REAL, DIMENSION(klon)    :: precip_snow_adv, snow_adv !Snow Drift precip./advection (not used in inlandsis)
165    REAL, DIMENSION(klon)    :: erod                      !erosion of surface snow (flux, kg/m2/s like evap)
166    REAL, DIMENSION(klon)    :: zsl_height, wind_velo     !surface layer height, wind spd
167    REAL, DIMENSION(klon)    :: dens_air,  snow_cont_air  !air density; snow content air
168    REAL, DIMENSION(klon)    :: alb_soil                  !albedo of underlying ice
169    REAL, DIMENSION(klon)    :: pexner                    !Exner potential
170    REAL                     :: pref
171    REAL, DIMENSION(klon,nsoilmx) :: tsoil0               !modif
172    REAL                          :: dtis                ! subtimestep
173    LOGICAL                       :: debut_is, lafin_is  ! debut and lafin for inlandsis
174
175    CHARACTER (len = 20)                      :: modname = 'surf_landice'
176    CHARACTER (len = 80)                      :: abort_message
177
178
179    REAL,DIMENSION(klon) :: alb1,alb2
180    REAL, DIMENSION (klon,6) :: alb6
181! End definition
182!****************************************************************************************
183!FC
184!FC
185   REAL,SAVE :: alb_vis_sno_lic
186  !$OMP THREADPRIVATE(alb_vis_sno_lic)
187   REAL,SAVE :: alb_nir_sno_lic
188  !$OMP THREADPRIVATE(alb_nir_sno_lic)
189  LOGICAL, SAVE :: firstcall = .TRUE.
190  !$OMP THREADPRIVATE(firstcall)
191
192
193!FC firtscall initializations
194!******************************************************************************************
195#ifdef ISO
196#ifdef ISOVERIF
197!     write(*,*) 'surf_land_ice 1499'   
198     do i=1,knon
199        if (iso_eau.gt.0) then
200             call iso_verif_egalite_choix(xtsnow(iso_eau,i),snow(i), &
201    &            'surf_land_ice 126',errmax,errmaxrel)
202        endif !if (iso_eau.gt.0) then     
203      enddo !do i=1,knon 
204#endif
205#endif
206
207  IF (firstcall) THEN
208  alb_vis_sno_lic=0.77
209  CALL getin_p('alb_vis_sno_lic',alb_vis_sno_lic)
210           PRINT*, 'alb_vis_sno_lic',alb_vis_sno_lic
211  alb_nir_sno_lic=0.77
212  CALL getin_p('alb_nir_sno_lic',alb_nir_sno_lic)
213           PRINT*, 'alb_nir_sno_lic',alb_nir_sno_lic
214 
215!  z0m=1.e-3
216!  z0h = z0m
217  firstcall=.false.
218  ENDIF
219!******************************************************************************************
220!
221! Initialize output variables
222    alb3(:) = 999999.
223    alb2(:) = 999999.
224    alb1(:) = 999999.
225   
226    runoff(:) = 0.
227!****************************************************************************************
228! Calculate total absorbed radiance at surface
229!
230!****************************************************************************************
231    radsol(:) = 0.0
232    radsol(1:knon) = swnet(1:knon) + lwnet(1:knon)
233
234!****************************************************************************************
235!  landice_opt = 0 : soil_model, calcul_flux, fonte_neige, ... 
236!  landice_opt = 1  : prepare and call INterace Lmdz SISvat (INLANDSIS)
237!****************************************************************************************
238
239
240    IF (landice_opt .EQ. 1) THEN
241
242!****************************************************************************************   
243! CALL to INLANDSIS interface
244!****************************************************************************************
245#ifdef CPP_INLANDSIS
246
247#ifdef ISO
248        CALL abort_gcm('surf_landice 235','isotopes pas dans INLANDSIS',1)
249#endif
250
251        debut_is=debut
252        lafin_is=.false.
253        ! Suppose zero surface speed
254        u0(:)            = 0.0
255        v0(:)            = 0.0
256
257
258        CALL calcul_flux_wind(knon, dtime, &
259         u0, v0, u1, v1, gustiness, cdragm, &
260         AcoefU, AcoefV, BcoefU, BcoefV, &
261         p1lay, temp_air, &
262         flux_u1, flux_v1)
263
264       
265       ! Set constants and compute some input for SISVAT
266       ! = 1000 hPa
267       ! and calculate incoming flux for SW and LW interval: swdown, lwdown
268       swdown(:)        = 0.0
269       lwdown(:)        = 0.0
270       snow_cont_air(:) = 0.  ! the snow content in air is not a prognostic variable of the model     
271       alb_soil(:)      = 0.4 ! before albedo(:) but here it is the ice albedo that we have to set
272       ustar(:)         = 0.
273       pref             = 100000.       
274       DO i = 1, knon
275          swdown(i)        = swnet(i)/(1-albedo(i))
276          lwdown(i)        = lwdownm(i)
277          wind_velo(i)     = u1(i)**2 + v1(i)**2
278          wind_velo(i)     = wind_velo(i)**0.5
279          pexner(i)        = (p1lay(i)/pref)**(RD/RCPD)
280          dens_air(i)      = p1lay(i)/RD/temp_air(i)  ! dry air density
281          zsl_height(i)    = pphi1(i)/RG     
282          tsoil0(i,:)      = tsoil(i,:) 
283          ustar(i)= (cdragm(i)*(wind_velo(i)**2))**0.5   
284       END DO
285       
286
287
288        dtis=dtime
289
290          IF (lafin) THEN
291            lafin_is=.true.
292          END IF
293
294          CALL surf_inlandsis(knon, rlon, rlat, knindex, itime, dtis, debut_is, lafin_is,&
295            rmu0, swdown, lwdown, albedo, pexner, ps, p1lay, precip_rain, precip_snow,   &
296            zsl_height, wind_velo, ustar, temp_air, dens_air, spechum, tsurf,&
297            rugoro, snow_cont_air, alb_soil, alt, slope, cloudf, &
298            radsol, qsol, tsoil0, snow, zfra, snowhgt, qsnow, to_ice, sissnow,agesno,   &
299            AcoefH, AcoefQ, BcoefH, BcoefQ, cdragm, cdragh, &
300            run_off_lic, fqfonte, ffonte, evap, erod, fluxsens, fluxlat,dflux_s, dflux_l, &
301            tsurf_new, alb1, alb2, alb3, alb6, &
302            emis_new, z0m, z0h, qsurf)
303
304          debut_is=.false.
305
306
307        ! Treatment of snow melting and calving
308
309        ! for consistency with standard LMDZ, add calving to run_off_lic
310        run_off_lic(:)=run_off_lic(:) + to_ice(:)
311
312        DO i = 1, knon
313           ffonte_global(knindex(i),is_lic)    = ffonte(i)
314           fqfonte_global(knindex(i),is_lic)   = fqfonte(i)! net melting= melting - refreezing
315           fqcalving_global(knindex(i),is_lic) = to_ice(i) ! flux
316           runofflic_global(knindex(i)) = run_off_lic(i)
317        ENDDO
318        ! Here, we assume that the calving term is equal to the to_ice term
319        ! (no ice accumulation)
320
321
322#else
323       abort_message='Pb de coherence: landice_opt = 1  mais CPP_INLANDSIS = .false.'
324       CALL abort_physic(modname,abort_message,1)
325#endif
326
327
328
329    ELSE
330
331!****************************************************************************************
332! Soil calculations
333!
334!****************************************************************************************
335
336    ! EV: use calbeta
337    CALL calbeta(dtime, is_lic, knon, snow, qsol, beta, cal, dif_grnd)
338
339
340    ! use soil model and recalculate properly cal
341    IF (soil_model) THEN
342       CALL soil(dtime, is_lic, knon, snow, tsurf, qsol, &
343    & longitude(knindex(1:knon)), latitude(knindex(1:knon)), tsoil, soilcap, soilflux)
344
345       cal(1:knon) = RCPD / soilcap(1:knon)
346       radsol(1:knon)  = radsol(1:knon) + soilflux(1:knon)
347    ELSE
348       cal = RCPD * calice
349       WHERE (snow > 0.0) cal = RCPD * calsno
350    ENDIF
351
352
353!****************************************************************************************
354! Calulate fluxes
355!
356!****************************************************************************************
357!    beta(:) = 1.0
358!    dif_grnd(:) = 0.0
359
360! Suppose zero surface speed
361    u0(:)=0.0
362    v0(:)=0.0
363    u1_lay(:) = u1(:) - u0(:)
364    v1_lay(:) = v1(:) - v0(:)
365
366    CALL calcul_fluxs(knon, is_lic, dtime, &
367         tsurf, p1lay, cal, beta, cdragh, cdragh, ps, &
368         precip_rain, precip_snow, snow, qsurf,  &
369         radsol, dif_grnd, temp_air, spechum, u1_lay, v1_lay, gustiness, &
370         1.,AcoefH, AcoefQ, BcoefH, BcoefQ, &
371         tsurf_new, evap, fluxlat, fluxsens, dflux_s, dflux_l)
372
373
374#ifdef ISO
375   ! verif
376#ifdef ISOVERIF
377     !write(*,*) 'surf_land_ice 1499'   
378     do i=1,knon
379       if (iso_eau.gt.0) then
380           if (snow(i).gt.ridicule) then
381             call iso_verif_egalite_choix(xtsnow(iso_eau,i),snow(i), &
382    &            'surf_land_ice 1151',errmax,errmaxrel)
383            endif !if ((snow(i).gt.ridicule)) then
384        endif !if (iso_eau.gt.0) then     
385      enddo !do i=1,knon 
386#endif
387!#ifdef ISOVERIF
388
389    do i=1,knon
390      snow_prec(i)=snow(i)
391      do ixt=1,niso
392      xtsnow_prec(ixt,i)=xtsnow(ixt,i)
393      enddo !do ixt=1,niso
394      ! initialisation:
395      fq_fonte_diag(i)=0.0
396      fqfonte_diag(i)=0.0
397      snow_evap_diag(i)=0.0
398    enddo !do i=1,knon
399#endif         
400!#ifdef ISO
401    CALL calcul_flux_wind(knon, dtime, &
402         u0, v0, u1, v1, gustiness, cdragm, &
403         AcoefU, AcoefV, BcoefU, BcoefV, &
404         p1lay, temp_air, &
405         flux_u1, flux_v1)
406
407!****************************************************************************************
408! Calculate snow height, age, run-off,..
409!   
410!****************************************************************************************
411    CALL fonte_neige(knon, is_lic, knindex, dtime, &
412         tsurf, precip_rain, precip_snow, &
413         snow, qsol, tsurf_new, evap &
414#ifdef ISO   
415     & ,fq_fonte_diag,fqfonte_diag,snow_evap_diag,fqcalving_diag   &
416     & ,max_eau_sol_diag,runoff_diag,run_off_lic_diag,coeff_rel_diag   &
417#endif
418     &   )
419
420
421#ifdef ISO
422#ifdef ISOVERIF
423      do i=1,knon 
424       if (iso_eau.gt.0) then 
425          call iso_verif_egalite_choix(Rland_ice(iso_eau,i),1.0, &
426     &         'surf_landice_mod 217',errmax,errmaxrel)
427       endif !if (iso_eau.gt.0) then   
428      enddo !do i=1,knon 
429#endif
430!#ifdef ISOVERIF
431
432       call calcul_iso_surf_lic_vectall(klon,knon, &
433     &           evap,snow_evap_diag,Tsurf_new,snow, &
434     &           fq_fonte_diag,fqfonte_diag,dtime,t_coup, &
435     &           precip_snow,xtprecip_snow,precip_rain,xtprecip_rain, snow_prec,xtsnow_prec, &
436     &           xtspechum,spechum,ps,Rland_ice, &
437     &           xtevap,xtsnow,fqcalving_diag, &
438     &           knindex,is_lic,run_off_lic_diag,coeff_rel_diag &
439     &  )
440
441!        call fonte_neige_export_xtrun_off_lic_0(knon,xtrun_off_lic_0_diag)
442
443#endif
444!#ifdef ISO
445
446
447!****************************************************************************************
448! Calculate albedo
449!
450!****************************************************************************************
451    CALL albsno(klon,knon,dtime,agesno(:),alb_neig(:), precip_snow(:)) 
452
453    WHERE (snow(1 : knon) .LT. 0.0001) agesno(1 : knon) = 0.
454    zfra(1:knon) = MAX(0.0,MIN(1.0,snow(1:knon)/(snow(1:knon)+10.0)))
455    alb1(1:knon) = alb_neig(1:knon)*zfra(1:knon) + &
456         0.6 * (1.0-zfra(1:knon))
457!
458!IM: plusieurs choix/tests sur l'albedo des "glaciers continentaux"
459!       alb1(1 : knon)  = 0.6 !IM cf FH/GK
460!       alb1(1 : knon)  = 0.82
461!       alb1(1 : knon)  = 0.77 !211003 Ksta0.77
462!       alb1(1 : knon)  = 0.8 !KstaTER0.8 & LMD_ARMIP5
463!IM: KstaTER0.77 & LMD_ARMIP6   
464
465! Attantion: alb1 and alb2 are not the same!
466    alb1(1:knon)  = alb_vis_sno_lic
467    alb2(1:knon)  = alb_nir_sno_lic
468
469
470!****************************************************************************************
471! Rugosity
472!
473!****************************************************************************************
474    z0m=1.e-3
475    z0h = z0m
476    z0m = SQRT(z0m**2+rugoro**2)
477
478
479
480    END IF ! landice_opt
481
482
483!****************************************************************************************
484! Send run-off on land-ice to coupler if coupled ocean.
485! run_off_lic has been calculated in fonte_neige or surf_inlandsis
486!
487!****************************************************************************************
488    IF (type_ocean=='couple') THEN
489       CALL cpl_send_landice_fields(itime, knon, knindex, run_off_lic)
490    ENDIF
491
492 ! transfer runoff rate [kg/m2/s](!) to physiq for output
493    runoff(1:knon)=run_off_lic(1:knon)/dtime
494
495 
496!****************************************************************************************
497! Etienne: comment these lines because of duplication just below
498!       snow_o=0.
499!       zfra_o = 0.
500!       DO j = 1, knon
501!           i = knindex(j)
502!           snow_o(i) = snow(j)
503!           zfra_o(i) = zfra(j)
504!       ENDDO
505!
506!****************************************************************************************
507       snow_o=0.
508       zfra_o = 0.
509       DO j = 1, knon
510           i = knindex(j)
511           snow_o(i) = snow(j)
512           zfra_o(i) = zfra(j)
513       ENDDO
514
515
516!albedo SB >>>
517     select case(NSW)
518     case(2)
519       alb_dir(1:knon,1)=alb1(1:knon)
520       alb_dir(1:knon,2)=alb2(1:knon)
521     case(4)
522       alb_dir(1:knon,1)=alb1(1:knon)
523       alb_dir(1:knon,2)=alb2(1:knon)
524       alb_dir(1:knon,3)=alb2(1:knon)
525       alb_dir(1:knon,4)=alb2(1:knon)
526     case(6)
527       alb_dir(1:knon,1)=alb1(1:knon)
528       alb_dir(1:knon,2)=alb1(1:knon)
529       alb_dir(1:knon,3)=alb1(1:knon)
530       alb_dir(1:knon,4)=alb2(1:knon)
531       alb_dir(1:knon,5)=alb2(1:knon)
532       alb_dir(1:knon,6)=alb2(1:knon)
533
534       IF ((landice_opt .EQ. 1) .AND. (iflag_albcalc .EQ. 2)) THEN
535       alb_dir(1:knon,1)=alb6(1:knon,1)
536       alb_dir(1:knon,2)=alb6(1:knon,2)
537       alb_dir(1:knon,3)=alb6(1:knon,3)
538       alb_dir(1:knon,4)=alb6(1:knon,4)
539       alb_dir(1:knon,5)=alb6(1:knon,5)
540       alb_dir(1:knon,6)=alb6(1:knon,6)
541       ENDIF
542
543     end select
544alb_dif=alb_dir
545!albedo SB <<<
546
547 
548 
549
550  END SUBROUTINE surf_landice
551!
552!****************************************************************************************
553!
554END MODULE surf_landice_mod
555
556
557
Note: See TracBrowser for help on using the repository browser.