Ignore:
Timestamp:
02/16/13 17:03:57 (11 years ago)
Author:
dubos
Message:

Transport now working again - tested with dcmip4.1.0

File:
1 edited

Legend:

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

    r134 r138  
    297297    REAL(rstd),INTENT(IN)  :: qu(iim*3*jjm,llm) 
    298298 
    299     REAL(rstd),INTENT(OUT) :: du(iim*3*jjm,llm), hflux(iim*3*jjm,llm) 
     299    REAL(rstd),INTENT(OUT) :: du(iim*3*jjm,llm), hflux(iim*3*jjm,llm) ! hflux in kg/s 
    300300    REAL(rstd),INTENT(OUT) :: dtheta_rhodz(iim*jjm,llm) 
    301301    REAL(rstd),INTENT(OUT) :: dps(iim*jjm) 
    302     REAL(rstd),INTENT(OUT) :: wflux(iim*jjm,llm+1) ! vertical mass flux 
     302    REAL(rstd),INTENT(OUT) :: wflux(iim*jjm,llm+1) ! vertical mass flux (kg/m2/s) 
    303303     
    304304    INTEGER :: i,j,ij,l 
     
    312312    REAL(rstd),ALLOCATABLE,SAVE :: phi(:,:)    ! geopotential 
    313313    REAL(rstd),ALLOCATABLE,SAVE :: Ftheta(:,:) ! theta flux 
    314     REAL(rstd),ALLOCATABLE,SAVE :: convm(:,:)  ! mass flux convergence 
     314    REAL(rstd),ALLOCATABLE,SAVE :: divm(:,:)  ! mass flux divergence 
    315315    REAL(rstd),ALLOCATABLE,SAVE :: berni(:,:)  ! Bernouilli function 
    316316     
     
    328328    ALLOCATE(phi(iim*jjm,llm))      ! geopotential 
    329329    ALLOCATE(Ftheta(3*iim*jjm,llm)) ! theta flux    
    330     ALLOCATE(convm(iim*jjm,llm))    ! mass flux convergence 
     330    ALLOCATE(divm(iim*jjm,llm))    ! mass flux convergence 
    331331    ALLOCATE(berni(iim*jjm,llm))    ! bernouilli term 
    332332 
     
    363363      DO i=ii_begin,ii_end 
    364364        ij=(j-1)*iim+i   
    365         ! convm = +div(mass flux), sign convention as in Ringler et al. 2012, eq. 21 
    366         convm(ij,l)= 1./Ai(ij)*(ne(ij,right)*hflux(ij+u_right,l)   +  & 
     365        ! divm = +div(mass flux), sign convention as in Ringler et al. 2012, eq. 21 
     366        divm(ij,l)= 1./Ai(ij)*(ne(ij,right)*hflux(ij+u_right,l)   +  & 
    367367                                ne(ij,rup)*hflux(ij+u_rup,l)       +  &   
    368368                                ne(ij,lup)*hflux(ij+u_lup,l)       +  &   
     
    383383  ENDDO 
    384384    
    385 !!! cumulate mass flux convergence from top to bottom 
     385!!! cumulate mass flux divergence from top to bottom 
    386386  DO  l = llm-1, 1, -1 
    387387!$OMP DO 
     
    389389      DO i=ii_begin,ii_end 
    390390        ij=(j-1)*iim+i 
    391         convm(ij,l) = convm(ij,l) + convm(ij,l+1) 
     391        divm(ij,l) = divm(ij,l) + divm(ij,l+1) 
    392392      ENDDO 
    393393    ENDDO 
     
    402402        ! w = int(z,ztop,div(flux)dz) + B(eta)dps/dt 
    403403        ! => w>0 for upward transport 
    404         wflux( ij, l+1 ) = convm( ij, l+1 ) - bp(l+1) * convm( ij, 1 ) 
     404        wflux( ij, l+1 ) = divm( ij, l+1 ) - bp(l+1) * divm( ij, 1 ) 
    405405      ENDDO 
    406406    ENDDO 
    407407  ENDDO 
    408408 
    409 ! compute dps, vertical mass flux at the surface = 0 
     409! compute dps, set vertical mass flux at the surface to 0 
    410410!$OMP DO 
    411411  DO j=jj_begin,jj_end 
     
    414414      wflux(ij,1)  = 0. 
    415415      ! dps/dt = -int(div flux)dz 
    416       dps(ij)=-convm(ij,1) * g  
     416      dps(ij)=-divm(ij,1) * g  
    417417    ENDDO 
    418418  ENDDO 
     
    644644    DEALLOCATE(phi)     ! geopotential 
    645645    DEALLOCATE(Ftheta)  ! theta flux    
    646     DEALLOCATE(convm)   ! mass flux convergence 
     646    DEALLOCATE(divm)    ! mass flux divergence 
    647647    DEALLOCATE(berni)   ! bernouilli term 
    648648!!$OMP END MASTER 
Note: See TracChangeset for help on using the changeset viewer.