Changeset 781 for codes/icosagcm
- Timestamp:
- 11/21/18 10:41:53 (6 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
codes/icosagcm/trunk/src/dissip/dissip_gcm.f90
r706 r781 87 87 INTEGER,ALLOCATABLE :: seed(:) 88 88 89 89 ! New variables added for dissipation vertical profile (SF, 19/09/18) 90 INTEGER :: vert_prof_dissip 91 REAL(rstd) :: dissip_factz,dissip_deltaz,dissip_zref,pseudoz 92 90 93 INTEGER :: i,j,ij,ind,it,iter,M 91 94 … … 429 432 IF (is_master) PRINT *,"cdivgrad : ",cdivgrad 430 433 431 432 fact=2 433 DO l=1,llm 434 IF(ap_bp_present) THEN ! height-dependent dissipation 435 zz= 1. - preff/presnivs(l) 436 ELSE 437 zz = 0. 438 END IF 439 zvert=fact-(fact-1)/(1+zz*zz) 440 tau_graddiv(l) = tau_graddiv(l)/zvert 441 tau_gradrot(l) = tau_gradrot(l)/zvert 442 tau_divgrad(l) = tau_divgrad(l)/zvert 443 ENDDO 434 ! Added CMIP5 dissipation vertical profile (SF, 19/09/18) 435 vert_prof_dissip = 1 436 CALL getin('vert_prof_dissip',vert_prof_dissip) 437 IF (vert_prof_dissip == 1) then 438 dissip_zref = 30. 439 dissip_deltaz = 10. 440 dissip_factz = 4. 441 CALL getin('dissip_factz',dissip_factz ) 442 CALL getin('dissip_deltaz',dissip_deltaz ) 443 CALL getin('dissip_zref',dissip_zref ) 444 DO l=1,llm 445 pseudoz=8.*log(preff/presnivs(l)) 446 zvert=1+ & 447 (tanh((pseudoz-dissip_zref)/dissip_deltaz)+1.)/2. & 448 *(dissip_factz-1.) 449 tau_graddiv(l) = tau_graddiv(l)/zvert 450 tau_gradrot(l) = tau_gradrot(l)/zvert 451 tau_divgrad(l) = tau_divgrad(l)/zvert 452 ENDDO 453 ELSE 454 fact=2 455 DO l=1,llm 456 IF(ap_bp_present) THEN ! height-dependent dissipation 457 zz= 1. - preff/presnivs(l) 458 ELSE 459 zz = 0. 460 END IF 461 zvert=fact-(fact-1)/(1+zz*zz) 462 tau_graddiv(l) = tau_graddiv(l)/zvert 463 tau_gradrot(l) = tau_gradrot(l)/zvert 464 tau_divgrad(l) = tau_divgrad(l)/zvert 465 ENDDO 466 ENDIF 444 467 445 468 mintau=tau_graddiv(1)
Note: See TracChangeset
for help on using the changeset viewer.