source: LMDZ4/trunk/libf/phy_IPCC_AR4/surf_seaice_mod.F90 @ 985

Last change on this file since 985 was 868, checked in by Laurent Fairhead, 17 years ago

Preparation du remplacement de la physique utilisee pour l'exercice IPCC_AR4
par la version de la physique avec thermique. On garde le repertoire phylmd
pour un petit moment pour que les utilisateurs ne soient pas trop perdus ...
phy_IPCC_AR4 = phylmd
LF

  • Property svn:eol-style set to native
  • Property svn:executable set to *
  • Property svn:keywords set to Author Date Id Revision
File size: 5.3 KB
Line 
1!
2! $Header$
3!
4MODULE surf_seaice_mod
5
6  USE dimphy
7  USE surface_data, ONLY     : ocean
8  USE ocean_slab_mod, ONLY   : ocean_slab_ice
9  USE ocean_forced_mod, ONLY : ocean_forced_ice
10  USE ocean_cpl_mod, ONLY    : ocean_cpl_ice
11  IMPLICIT NONE
12
13CONTAINS
14!
15!****************************************************************************************
16!
17  SUBROUTINE surf_seaice( &
18       rlon, rlat, sollw, albedo, &
19       fder, &
20       itime, dtime, jour, knon, knindex, &
21       debut, lafin, swdown, &
22       tsurf, p1lay, tq_cdrag, precip_rain, precip_snow, temp_air, spechum, &
23       petAcoef, peqAcoef, petBcoef, peqBcoef, &
24       ps, u1_lay, v1_lay, rugoro, pctsrf, &
25       radsol, snow, qsurf, qsol, agesno, &
26       tsoil, z0_new, alblw, evap, fluxsens, fluxlat, &
27       tsurf_new, alb_new, dflux_s, dflux_l, pctsrf_sic)
28!
29! This subroutine will make a call to ocean_XXX_ice according to the ocean mode (force,
30! slab or couple). The calculation of rugosity for the sea-ice surface is also done
31! in here because it is the same calculation for the different modes of ocean.
32!
33    INCLUDE "indicesol.h"
34    INCLUDE "dimsoil.h"
35
36! Input arguments
37!****************************************************************************************
38    INTEGER, INTENT(IN)                      :: itime, jour, knon
39    INTEGER, DIMENSION(klon), INTENT(IN)     :: knindex
40    LOGICAL, INTENT(IN)                      :: debut, lafin
41    REAL, INTENT(IN)                         :: dtime
42    REAL, DIMENSION(klon), INTENT(IN)        :: rlon, rlat
43    REAL, DIMENSION(klon), INTENT(IN)        :: sollw
44    REAL, DIMENSION(klon), INTENT(IN)        :: albedo
45    REAL, DIMENSION(klon), INTENT(IN)        :: fder
46    REAL, DIMENSION(klon), INTENT(IN)        :: swdown   
47    REAL, DIMENSION(klon), INTENT(IN)        :: tsurf
48    REAL, DIMENSION(klon), INTENT(IN)        :: p1lay
49    REAL, DIMENSION(klon), INTENT(IN)        :: tq_cdrag
50    REAL, DIMENSION(klon), INTENT(IN)        :: precip_rain, precip_snow
51    REAL, DIMENSION(klon), INTENT(IN)        :: temp_air, spechum
52    REAL, DIMENSION(klon), INTENT(IN)        :: petAcoef, peqAcoef
53    REAL, DIMENSION(klon), INTENT(IN)        :: petBcoef, peqBcoef
54    REAL, DIMENSION(klon), INTENT(IN)        :: ps
55    REAL, DIMENSION(klon), INTENT(IN)        :: u1_lay, v1_lay
56    REAL, DIMENSION(klon), INTENT(IN)        :: rugoro
57    REAL, DIMENSION(klon,nbsrf), INTENT(IN)  :: pctsrf
58
59! In/Output arguments
60!****************************************************************************************
61    REAL, DIMENSION(klon), INTENT(INOUT)          :: radsol
62    REAL, DIMENSION(klon), INTENT(INOUT)          :: snow, qsurf, qsol
63    REAL, DIMENSION(klon), INTENT(INOUT)          :: agesno
64    REAL, DIMENSION(klon, nsoilmx), INTENT(INOUT) :: tsoil
65
66! Output arguments
67!****************************************************************************************
68    REAL, DIMENSION(klon), INTENT(OUT)       :: z0_new
69    REAL, DIMENSION(klon), INTENT(OUT)       :: alblw
70    REAL, DIMENSION(klon), INTENT(OUT)       :: evap, fluxsens, fluxlat
71    REAL, DIMENSION(klon), INTENT(OUT)       :: tsurf_new, alb_new
72    REAL, DIMENSION(klon), INTENT(OUT)       :: dflux_s, dflux_l     
73    REAL, DIMENSION(klon), INTENT(OUT)       :: pctsrf_sic
74
75! End definitions
76!****************************************************************************************
77
78!****************************************************************************************
79! Switch according to type of ocean (couple, slab or forced)
80!
81!****************************************************************************************
82    SELECT CASE(ocean)
83    CASE('couple')
84       CALL ocean_cpl_ice( &
85          rlon, rlat, sollw, albedo, &
86          fder, &
87          itime, dtime, knon, knindex, &
88          lafin,&
89          swdown, &
90          p1lay, tq_cdrag, precip_rain, precip_snow, temp_air, spechum,&
91          petAcoef, peqAcoef, petBcoef, peqBcoef, &
92          ps, u1_lay, v1_lay, pctsrf, &
93          radsol, snow, qsurf, &
94          alblw, evap, fluxsens, fluxlat, &
95          tsurf_new, alb_new, dflux_s, dflux_l, pctsrf_sic)
96
97    CASE('slab')
98       CALL ocean_slab_ice( &
99          itime, dtime, jour, knon, knindex, &
100          debut, &
101          tsurf, p1lay, tq_cdrag, precip_rain, precip_snow, temp_air, spechum,&
102          petAcoef, peqAcoef, petBcoef, peqBcoef, &
103          ps, u1_lay, v1_lay, &
104          radsol, snow, qsurf, qsol, agesno, &
105          tsoil, &
106          alblw, evap, fluxsens, fluxlat, &
107          tsurf_new, alb_new, dflux_s, dflux_l, pctsrf_sic)
108   
109    CASE('force')
110       CALL ocean_forced_ice(itime, dtime, jour, knon, knindex, &
111          debut, &
112          tsurf, p1lay, tq_cdrag, precip_rain, precip_snow, temp_air, spechum,&
113          petAcoef, peqAcoef, petBcoef, peqBcoef, &
114          ps, u1_lay, v1_lay, &
115          radsol, snow, qsurf, qsol, agesno, &
116          tsoil, alblw, evap, fluxsens, fluxlat, &
117          tsurf_new, alb_new, dflux_s, dflux_l, pctsrf_sic)
118    END SELECT
119
120!****************************************************************************************
121! Calculate rugosity
122!
123!****************************************************************************************
124    z0_new = 0.002
125    z0_new = SQRT(z0_new**2+rugoro**2)
126
127
128  END SUBROUTINE surf_seaice
129!
130!****************************************************************************************
131!
132END MODULE surf_seaice_mod
133
Note: See TracBrowser for help on using the repository browser.