Ignore:
Timestamp:
02/09/13 02:01:07 (11 years ago)
Author:
dubos
Message:

Some steps towards coupling with transport

File:
1 edited

Legend:

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

    r131 r132  
    88  TYPE(t_field),POINTER :: f_gradq3d(:) 
    99 
    10   PUBLIC init_advect_tracer, advect_tracer 
     10  PUBLIC init_advect_tracer, advect_tracer_rhodz, advect_tracer 
    1111 
    1212CONTAINS 
     
    3232 
    3333  END SUBROUTINE init_advect_tracer 
     34 
     35  SUBROUTINE advect_tracer_rhodz(f_ps, f_rhodz) 
     36    USE icosa 
     37    USE advect_mod 
     38    USE disvert_mod 
     39    USE mpipara 
     40    IMPLICIT NONE 
     41    TYPE(t_field),POINTER :: f_ps(:)     ! surface pressure, IN 
     42    TYPE(t_field),POINTER :: f_rhodz(:)  ! mass, OUT 
     43    REAL(rstd),POINTER :: rhodz(:,:)  
     44    REAL(rstd),POINTER :: ps(:) 
     45    INTEGER :: ind 
     46 
     47    DO ind=1,ndomain 
     48       CALL swap_dimensions(ind) 
     49       CALL swap_geometry(ind) 
     50       rhodz=f_rhodz(ind) 
     51       ps=f_ps(ind) 
     52       CALL compute_rhodz(ps,rhodz) 
     53    END DO 
     54  END SUBROUTINE advect_tracer_rhodz 
     55 
     56  SUBROUTINE compute_rhodz(ps, rhodz) 
     57    USE icosa 
     58    USE disvert_mod 
     59    REAL(rstd), INTENT(IN) :: ps(iim*jjm) 
     60    REAL(rstd), INTENT(OUT) :: rhodz(iim*jjm,llm) 
     61    INTEGER :: l,i,j,ij 
     62    DO l = 1, llm 
     63       DO j=jj_begin-1,jj_end+1 
     64          DO i=ii_begin-1,ii_end+1 
     65             ij=(j-1)*iim+i 
     66             rhodz(ij,l) = (ap(l) - ap(l+1) + (bp(l)-bp(l+1))*ps(ij))/g  
     67          ENDDO 
     68       ENDDO 
     69    ENDDO 
     70  END SUBROUTINE compute_rhodz 
    3471 
    3572  SUBROUTINE advect_tracer(f_ps,f_u,f_q) 
Note: See TracChangeset for help on using the changeset viewer.