Changeset 132 for codes/icosagcm/trunk/src/advect_tracer.f90
- Timestamp:
- 02/09/13 02:01:07 (11 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
codes/icosagcm/trunk/src/advect_tracer.f90
r131 r132 8 8 TYPE(t_field),POINTER :: f_gradq3d(:) 9 9 10 PUBLIC init_advect_tracer, advect_tracer 10 PUBLIC init_advect_tracer, advect_tracer_rhodz, advect_tracer 11 11 12 12 CONTAINS … … 32 32 33 33 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 34 71 35 72 SUBROUTINE advect_tracer(f_ps,f_u,f_q)
Note: See TracChangeset
for help on using the changeset viewer.