Changeset 2254 for LMDZ5/trunk/libf/phylmd/surf_ocean_mod.F90
- Timestamp:
- Apr 3, 2015, 12:16:36 PM (10 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
LMDZ5/trunk/libf/phylmd/surf_ocean_mod.F90
r2243 r2254 6 6 CONTAINS 7 7 ! 8 !****************************************************************************** **********8 !****************************************************************************** 9 9 ! 10 10 SUBROUTINE surf_ocean(rlon, rlat, swnet, lwnet, alb1, & 11 11 windsp, rmu0, fder, tsurf_in, & 12 12 itime, dtime, jour, knon, knindex, & 13 p1lay, cdragh, cdragm, precip_rain, precip_snow, temp_air, spechum, &13 p1lay, z1lay, cdragh, cdragm, precip_rain, precip_snow, temp_air, spechum, & 14 14 AcoefH, AcoefQ, BcoefH, BcoefQ, & 15 15 AcoefU, AcoefV, BcoefU, BcoefV, & … … 38 38 39 39 ! Input variables 40 !****************************************************************************** **********40 !****************************************************************************** 41 41 INTEGER, INTENT(IN) :: itime, jour, knon 42 42 INTEGER, DIMENSION(klon), INTENT(IN) :: knindex … … 50 50 REAL, DIMENSION(klon), INTENT(IN) :: fder 51 51 REAL, DIMENSION(klon), INTENT(IN) :: tsurf_in 52 REAL, DIMENSION(klon), INTENT(IN) :: p1lay 52 REAL, DIMENSION(klon), INTENT(IN) :: p1lay,z1lay ! pression (Pa) et altitude (m) du premier niveau 53 53 REAL, DIMENSION(klon), INTENT(IN) :: cdragh 54 54 REAL, DIMENSION(klon), INTENT(IN) :: cdragm … … 63 63 64 64 ! In/Output variables 65 !****************************************************************************** **********65 !****************************************************************************** 66 66 REAL, DIMENSION(klon), INTENT(INOUT) :: snow 67 67 REAL, DIMENSION(klon), INTENT(INOUT) :: qsurf … … 69 69 70 70 ! Output variables 71 !****************************************************************************** **********71 !****************************************************************************** 72 72 REAL, DIMENSION(klon), INTENT(OUT) :: z0m, z0h 73 73 !albedo SB >>> … … 84 84 85 85 ! Local variables 86 !****************************************************************************** **********86 !****************************************************************************** 87 87 INTEGER :: i, k 88 88 REAL :: tmp … … 90 90 REAL, DIMENSION(klon) :: alb_eau 91 91 REAL, DIMENSION(klon) :: radsol 92 REAL, DIMENSION(klon) :: cdragq ! Cdrag pour l'evaporation 92 93 93 94 ! End definition 94 !****************************************************************************** **********95 96 97 !****************************************************************************** **********95 !****************************************************************************** 96 97 98 !****************************************************************************** 98 99 ! Calculate total net radiance at surface 99 100 ! 100 !****************************************************************************** **********101 !****************************************************************************** 101 102 radsol(:) = 0.0 102 103 radsol(1:knon) = swnet(1:knon) + lwnet(1:knon) 103 104 104 !**************************************************************************************** 105 !****************************************************************************** 106 ! Cdragq computed from cdrag 107 ! The difference comes only from a factor (f_z0qh_oce) on z0, so that 108 ! it can be computed inside surf_ocean 109 ! More complicated appraches may require the propagation through 110 ! pbl_surface of an independant cdragq variable. 111 !****************************************************************************** 112 113 IF ( f_z0qh_oce .ne. 1.) THEN 114 cdragq(:)=cdragh(:)* & 115 log(z1lay(:)/z0h(:))/log(z1lay(:)/(f_z0qh_oce*z0h(:))) 116 ELSE 117 cdragq(:)=cdragh(:) 118 ENDIF 119 120 !****************************************************************************** 105 121 ! Switch according to type of ocean (couple, slab or forced) 106 !****************************************************************************** **********122 !****************************************************************************** 107 123 SELECT CASE(type_ocean) 108 124 CASE('couple') … … 111 127 windsp, fder, & 112 128 itime, dtime, knon, knindex, & 113 p1lay, cdragh, cdrag m, precip_rain, precip_snow,temp_air,spechum,&129 p1lay, cdragh, cdragq, cdragm, precip_rain, precip_snow,temp_air,spechum,& 114 130 AcoefH, AcoefQ, BcoefH, BcoefQ, & 115 131 AcoefU, AcoefV, BcoefU, BcoefV, & … … 122 138 CALL ocean_slab_noice( & 123 139 itime, dtime, jour, knon, knindex, & 124 p1lay, cdragh, cdrag m, precip_rain, precip_snow, temp_air, spechum,&140 p1lay, cdragh, cdragq, cdragm, precip_rain, precip_snow, temp_air, spechum,& 125 141 AcoefH, AcoefQ, BcoefH, BcoefQ, & 126 142 AcoefU, AcoefV, BcoefU, BcoefV, & … … 133 149 CALL ocean_forced_noice( & 134 150 itime, dtime, jour, knon, knindex, & 135 p1lay, cdragh, cdrag m, precip_rain, precip_snow, &151 p1lay, cdragh, cdragq, cdragm, precip_rain, precip_snow, & 136 152 temp_air, spechum, & 137 153 AcoefH, AcoefQ, BcoefH, BcoefQ, & … … 143 159 END SELECT 144 160 145 !****************************************************************************** **********161 !****************************************************************************** 146 162 ! fcodron: compute lmt_bils forced case (same as wfbils_oce / 1.-contfracatm) 147 !****************************************************************************** **********163 !****************************************************************************** 148 164 IF (type_ocean.NE.'slab') THEN 149 165 lmt_bils(:)=0. … … 154 170 END IF 155 171 156 !****************************************************************************** **********172 !****************************************************************************** 157 173 ! Calculate albedo 158 ! 159 !**************************************************************************************** 174 !****************************************************************************** 160 175 !albedo SB >>> 161 162 163 176 if(iflag_albedo==1)then 164 177 call ocean_albedo(knon,rmu0,knindex,windsp,SFRWL,alb_dir_new,alb_dif_new) … … 180 193 !albedo SB <<< 181 194 182 !****************************************************************************** **********195 !****************************************************************************** 183 196 ! Calculate the rugosity 184 ! 185 !**************************************************************************************** 197 !****************************************************************************** 186 198 IF (iflag_z0_oce==0) THEN 187 199 DO i = 1, knon … … 197 209 ENDIF 198 210 ! 199 !**************************************************************************************** 200 ! 211 !****************************************************************************** 201 212 END SUBROUTINE surf_ocean 202 ! 203 !**************************************************************************************** 213 !****************************************************************************** 204 214 ! 205 215 END MODULE surf_ocean_mod
Note: See TracChangeset
for help on using the changeset viewer.