source: LMDZ4/trunk/libf/phylmd/surf_seaice_mod.F90 @ 878

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

Modifications suite a la transformation des fichiers include pour
qu'ils soient compatibles a la fois au format fixe et au format libre
Un bon nombre de fichiers *.inc du coup disparaissent
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
RevLine 
[781]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!
[793]33    INCLUDE "indicesol.h"
[781]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.