Changeset 781


Ignore:
Timestamp:
11/21/18 10:41:53 (5 years ago)
Author:
sfromang
Message:

New vertical profil for dissipation coefficient (via vert_prof_dissip variable) for compatibility with LMDZ

File:
1 edited

Legend:

Unmodified
Added
Removed
  • codes/icosagcm/trunk/src/dissip/dissip_gcm.f90

    r706 r781  
    8787  INTEGER,ALLOCATABLE   :: seed(:) 
    8888   
    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                         
    9093  INTEGER :: i,j,ij,ind,it,iter,M 
    9194 
     
    429432    IF (is_master) PRINT *,"cdivgrad : ",cdivgrad 
    430433 
    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 
    444467 
    445468    mintau=tau_graddiv(1) 
Note: See TracChangeset for help on using the changeset viewer.