Ignore:
Timestamp:
06/03/13 23:45:04 (11 years ago)
Author:
dubos
Message:

new hydrostatic balance - tested with JW06 - code cleanup to follow

File:
1 edited

Legend:

Unmodified
Added
Removed
  • codes/icosagcm/trunk/src/disvert.f90

    r131 r156  
    44  REAL(rstd), SAVE, POINTER :: bp(:) 
    55  REAL(rstd), SAVE, POINTER :: presnivs(:) 
     6  REAL(rstd), SAVE, POINTER :: mass_al(:), mass_bl(:), mass_ak(:), mass_bk(:), mass_dak(:), mass_dbk(:) 
     7  REAL(rstd) :: ptop ! pressure at top of atmosphere l=llm+1 
    68 
    79CONTAINS 
     
    1719  IMPLICIT NONE 
    1820    CHARACTER(LEN=255) :: disvert_type = 'std' 
    19      
     21    INTEGER :: l 
     22 
    2023    CALL getin("disvert",disvert_type) 
    2124     
     
    6164         
    6265    END SELECT 
     66 
     67    ! Convert from pressure coordinate to mass coordinate 
     68    ! pk = ap(k) + bp(k)*ps(ij) = ptop + g*( mass_ak(k) + mass_bk(k)*ms(ij) ) 
     69    ptop = ap(llm+1) 
     70    ALLOCATE(mass_al(llm+1)) 
     71    ALLOCATE(mass_bl(llm+1)) 
     72    ALLOCATE(mass_ak(llm)) 
     73    ALLOCATE(mass_bk(llm)) 
     74    ALLOCATE(mass_dak(llm)) 
     75    ALLOCATE(mass_dbk(llm)) 
     76 
     77    ! FIXME : leave ps for the moment ; change ps to ms later 
     78    DO l=1,llm+1 
     79!       mass_al(l) = (ap(l)-ptop)/g 
     80!       mass_bl(l) = bp(l)/g 
     81       mass_al(l) = (ap(l)-ptop) 
     82       mass_bl(l) = bp(l) 
     83    END DO 
     84    DO l=1,llm 
     85       mass_ak(l) = .5*(mass_al(l)+mass_al(l+1)) 
     86       mass_bk(l) = .5*(mass_bl(l)+mass_bl(l+1)) 
     87       mass_dak(l) = mass_al(l)-mass_al(l+1)  ! >0 
     88       mass_dbk(l) = mass_bl(l)-mass_bl(l+1)  ! >0 
     89    END DO 
    6390 
    6491  END SUBROUTINE init_disvert   
Note: See TracChangeset for help on using the changeset viewer.