- Timestamp:
- Dec 18, 2015, 8:27:39 PM (9 years ago)
- Location:
- LMDZ5/trunk/libf/phylmd
- Files:
-
- 4 edited
Legend:
- Unmodified
- Added
- Removed
-
LMDZ5/trunk/libf/phylmd/albedo.F90
r2346 r2413 22 22 include "clesphys.h" 23 23 24 ! fmagic -> clesphys.h/.inc25 ! REAL fmagic ! un facteur magique pour regler l'albedo26 ! cc PARAMETER (fmagic=0.7)27 ! ccIM => a remplacer28 ! PARAMETER (fmagic=1.32)29 ! PARAMETER (fmagic=1.0)30 ! PARAMETER (fmagic=0.7)31 24 INTEGER npts ! il controle la precision de l'integration 32 25 PARAMETER (npts=120) ! 120 correspond a l'interval 6 minutes … … 74 67 END DO 75 68 IF (srmu/=0.0) THEN 76 albedo(i) = salb/srmu *fmagic + pmagic69 albedo(i) = salb/srmu 77 70 ELSE ! nuit polaire (on peut prendre une valeur quelconque) 78 albedo(i) = fmagic71 albedo(i) = 1.0 79 72 END IF 80 73 END DO … … 119 112 END DO 120 113 IF (srmu/=0.0) THEN 121 albedo(i) = salb/srmu *fmagic + pmagic114 albedo(i) = salb/srmu 122 115 ELSE ! nuit polaire (on peut prendre une valeur quelconque) 123 albedo(i) = fmagic116 albedo(i) = 1.0 124 117 END IF 125 118 END DO … … 146 139 real, intent(out):: albedo(klon) 147 140 148 ! REAL fmagic ! un facteur magique pour regler l'albedo149 ! cc PARAMETER (fmagic=0.7)150 ! ccIM => a remplacer151 ! PARAMETER (fmagic=1.32)152 ! PARAMETER (fmagic=1.0)153 ! PARAMETER (fmagic=0.7)154 155 141 REAL fauxo 156 142 INTEGER i … … 161 147 DO i = 1, klon 162 148 fauxo = (1.47-acos(max(rmu0(i), 0.0)))/0.15 163 albedo(i) = fmagic*(.03+.630/(1.+fauxo*fauxo)) + pmagic149 albedo(i) = 0.03+.630/(1.+fauxo*fauxo) 164 150 albedo(i) = max(min(albedo(i),0.60), 0.04) 165 151 END DO 166 152 ELSE 167 153 DO i = 1, klon 168 albedo(i) = fmagic*0.058/(max(rmu0(i), 0.0)+0.30) + pmagic154 albedo(i) = 0.058/(max(rmu0(i), 0.0)+0.30) 169 155 albedo(i) = max(min(albedo(i),0.60), 0.04) 170 156 END DO -
LMDZ5/trunk/libf/phylmd/conf_phys_m.F90
r2357 r2413 914 914 !Config Help = 915 915 ! 916 NSW_omp = 6916 NSW_omp = 2 917 917 call getin('NSW',NSW_omp) 918 918 !albedo SB >>> … … 2165 2165 CALL abort_physic('conf_phys','version_ocean not valid',1) 2166 2166 END IF 2167 2168 !--test on radiative scheme 2169 IF (iflag_rrtm .EQ. 0) THEN 2170 IF (NSW.NE.2) THEN 2171 WRITE(lunout,*) ' ERROR iflag_rrtm=0 and NSW<>2 not possible' 2172 CALL abort_physic('conf_phys','choice NSW not valid',1) 2173 ENDIF 2174 ELSE IF (iflag_rrtm .EQ. 1) THEN 2175 IF (NSW.NE.2.AND.NSW.NE.4.AND.NSW.NE.6) THEN 2176 WRITE(lunout,*) ' ERROR iflag_rrtm=1 and NSW<>2,4,6 not possible' 2177 CALL abort_physic('conf_phys','choice NSW not valid',1) 2178 ENDIF 2179 ELSE 2180 WRITE(lunout,*) ' ERROR iflag_rrtm<>0,1' 2181 CALL abort_physic('conf_phys','choice iflag_rrtm not valid',1) 2182 ENDIF 2183 2184 !--test on ocean surface albedo 2185 IF (iflag_albedo.LT.0.OR.iflag_albedo.GT.1) THEN 2186 WRITE(lunout,*) ' ERROR iflag_albedo<>0,1' 2187 CALL abort_physic('conf_phys','choice iflag_albedo not valid',1) 2188 ENDIF 2167 2189 2168 2190 ! Test sur new_aod. Ce flag permet de retrouver les resultats de l'AR4 -
LMDZ5/trunk/libf/phylmd/radlwsw_m.F90
r2394 r2413 426 426 427 427 !albedo SB >>> 428 ! PALBD(i,1) = alb1(iof+i) 429 ! PALBD(i,2) = alb2(iof+i) 430 ! PALBD_NEW(i,1) = alb1(iof+i) !!!!! A REVOIR (MPL) PALBD_NEW en 431 ! fonction bdes SW 432 ! do kk=2,NSW 433 ! PALBD_NEW(i,kk) = alb2(iof+i) 434 ! enddo 435 ! PALBP(i,1) = alb1(iof+i) 436 ! PALBP(i,2) = alb2(iof+i) 437 ! 438 ! PALBP_NEW(i,1) = alb1(iof+i) !!!!! A REVOIR (MPL) PALBP_NEW en 439 ! fonction bdes SW 440 ! do kk=2,NSW 441 ! PALBP_NEW(i,kk) = alb2(iof+i) 442 ! enddo 443 444 if(iflag_rrtm==0)then 445 select case(nsw) 446 case(2) 447 PALBD(i,1)=alb_dif(iof+i,1) 448 PALBD(i,2)=alb_dif(iof+i,2) 449 PALBP(i,1)=alb_dir(iof+i,1) 450 PALBP(i,2)=alb_dir(iof+i,2) 451 case(4) 452 PALBD(i,1)=alb_dif(iof+i,1) 453 PALBD(i,2)=(alb_dif(iof+i,2)*SFRWL(2)+alb_dif(iof+i,3)*SFRWL(3) & 454 +alb_dif(iof+i,4)*SFRWL(4))/(SFRWL(2)+SFRWL(3)+SFRWL(4)) 455 PALBP(i,1)=alb_dir(iof+i,1) 456 PALBP(i,2)=(alb_dir(iof+i,2)*SFRWL(2)+alb_dir(iof+i,3)*SFRWL(3) & 457 +alb_dir(iof+i,4)*SFRWL(4))/(SFRWL(2)+SFRWL(3)+SFRWL(4)) 458 case(6) 459 PALBD(i,1)=(alb_dif(iof+i,1)*SFRWL(1)+alb_dif(iof+i,2)*SFRWL(2) & 460 +alb_dif(iof+i,3)*SFRWL(3))/(SFRWL(1)+SFRWL(2)+SFRWL(3)) 461 PALBD(i,2)=(alb_dif(iof+i,4)*SFRWL(4)+alb_dif(iof+i,5)*SFRWL(5) & 462 +alb_dif(iof+i,6)*SFRWL(6))/(SFRWL(4)+SFRWL(5)+SFRWL(6)) 463 PALBP(i,1)=(alb_dir(iof+i,1)*SFRWL(1)+alb_dir(iof+i,2)*SFRWL(2) & 464 +alb_dir(iof+i,3)*SFRWL(3))/(SFRWL(1)+SFRWL(2)+SFRWL(3)) 465 PALBP(i,2)=(alb_dir(iof+i,4)*SFRWL(4)+alb_dir(iof+i,5)*SFRWL(5) & 466 +alb_dir(iof+i,6)*SFRWL(6))/(SFRWL(4)+SFRWL(5)+SFRWL(6)) 467 end select 468 elseif(iflag_rrtm==1)then 428 ! 429 IF (iflag_rrtm==0) THEN 430 ! 431 PALBD(i,1)=alb_dif(iof+i,1) 432 PALBD(i,2)=alb_dif(iof+i,2) 433 PALBP(i,1)=alb_dir(iof+i,1) 434 PALBP(i,2)=alb_dir(iof+i,2) 435 ! 436 ELSEIF (iflag_rrtm==1) THEn 437 ! 469 438 DO kk=1,NSW 470 PALBD_NEW(i,kk)=alb_dif(iof+i,kk)471 PALBP_NEW(i,kk)=alb_dir(iof+i,kk)439 PALBD_NEW(i,kk)=alb_dif(iof+i,kk) 440 PALBP_NEW(i,kk)=alb_dir(iof+i,kk) 472 441 ENDDO 473 endif 442 ! 443 ENDIF 474 444 !albedo SB <<< 475 476 477 445 478 446 … … 666 634 ENDIF 667 635 668 669 DO i=1,kdlon670 DO k=1,kflev+1 671 ZSWFT0_i(1:klon,k) = ZFSDN0(1:klon,k)-ZFSUP0(1:klon,k)672 ZLWFT0_i(1:klon,k)=-ZFLDN0(1:klon,k)-ZFLUP0(1:klon,k)636 ZSWFT0_i(:,:) = ZFSDN0(:,:)-ZFSUP0(:,:) 637 ZLWFT0_i(:,:) =-ZFLDN0(:,:)-ZFLUP0(:,:) 638 639 DO i=1,kdlon 640 DO k=1,kflev+1 673 641 ! print *,'iof i k klon klev=',iof,i,k,klon,klev 674 642 lwdn0 ( iof+i,k) = ZFLDN0 ( i,k) … … 680 648 swup0 ( iof+i,k) = ZFSUP0 ( i,k) 681 649 swup ( iof+i,k) = ZFSUP ( i,k) 682 683 650 ENDDO 651 ENDDO 684 652 ! print*,'SW_AR4 ZFSDN0 1 , klev:',ZFSDN0(1:klon,1),ZFSDN0(1:klon,klev) 685 653 ! print*,'SW_AR4 swdn0 1 , klev:',swdn0(1:klon,1),swdn0(1:klon,klev) -
LMDZ5/trunk/libf/phylmd/surf_ocean_mod.F90
r2405 r2413 175 175 176 176 !****************************************************************************** 177 ! Calculate albedo177 ! Calculate ocean surface albedo 178 178 !****************************************************************************** 179 179 !albedo SB >>> 180 if(iflag_albedo==1)then 181 call ocean_albedo(knon,rmu0,knindex,windsp,SFRWL,alb_dir_new,alb_dif_new) 182 else 180 IF (iflag_albedo==0) THEN 181 !--old parametrizations of ocean surface albedo 182 ! 183 183 IF (cycle_diurne) THEN 184 ! 184 185 CALL alboc_cd(rmu0,alb_eau) 186 ! 187 !--ad-hoc correction for model radiative balance tuning 188 !--now outside alboc_cd routine 189 alb_eau(:) = fmagic*alb_eau(:) + pmagic 190 alb_eau=MIN(MAX(alb_eau,0.0),1.0) 191 ! 185 192 ELSE 193 ! 186 194 CALL alboc(REAL(jour),rlat,alb_eau) 195 !--ad-hoc correction for model radiative balance tuning 196 !--now outside alboc routine 197 alb_eau(:) = fmagic*alb_eau(:) + pmagic 198 alb_eau=MIN(MAX(alb_eau(i),0.04),0.60) 199 ! 187 200 ENDIF 188 201 ! 189 202 DO i =1, knon 190 dok=1,nsw203 DO k=1,nsw 191 204 alb_dir_new(i,k) = alb_eau(knindex(i)) 192 enddo205 ENDDO 193 206 ENDDO 194 !IM 09122015 beg 195 !IM next line corresponds to Sunghye Baek change that she made when she added new ocean albedo 196 ! alb_dif_new=0.05 !alb_dir_new 197 !IM next line corresponds to the old values of LMDZ5A/IPSLCM5A versions 207 !IM 09122015 next line corresponds to the old way of doing in LMDZ5A/IPSLCM5A versions 208 !albedo for diffuse radiation is taken the same as for direct radiation 198 209 alb_dif_new=alb_dir_new 199 210 !IM 09122015 end 200 endif 201 211 ! 212 ELSE IF (iflag_albedo==1) THEN 213 !--new parametrization of ocean surface albedo by Sunghye Baek 214 !--albedo for direct and diffuse radiation are different 215 ! 216 CALL ocean_albedo(knon,rmu0,knindex,windsp,SFRWL,alb_dir_new,alb_dif_new) 217 ! 218 !--ad-hoc correction for model radiative balance tuning 219 alb_dir_new(:,:) = fmagic*alb_dir_new(:,:) + pmagic 220 alb_dir_new=MIN(MAX(alb_dir_new,0.0),1.0) 221 alb_dif_new=MIN(MAX(alb_dif_new,0.0),1.0) 222 ! 223 ENDIF 202 224 !albedo SB <<< 203 225
Note: See TracChangeset
for help on using the changeset viewer.