Changeset 583 for codes/icosagcm/devel/src/transport
- Timestamp:
- 10/13/17 21:21:27 (7 years ago)
- Location:
- codes/icosagcm/devel/src/transport
- Files:
-
- 2 edited
Legend:
- Unmodified
- Added
- Removed
-
codes/icosagcm/devel/src/transport/advect.F90
r582 r583 425 425 ! Horizontal transport (S. Dubey, T. Dubos) 426 426 ! Slope-limited van Leer approach with hexagons 427 SUBROUTINE compute_advect_horiz(update_mass, hfluxt,cc,gradq3d, mass,qi)427 SUBROUTINE compute_advect_horiz(update_mass,diagflux_on, hfluxt,cc,gradq3d, mass,qi,qfluxt) 428 428 USE trace 429 429 USE omp_para 430 430 IMPLICIT NONE 431 LOGICAL, INTENT(IN) :: update_mass 431 LOGICAL, INTENT(IN) :: update_mass, diagflux_on 432 432 REAL(rstd), INTENT(IN) :: gradq3d(iim*jjm,llm,3) 433 433 REAL(rstd), INTENT(IN) :: hfluxt(3*iim*jjm,llm) ! mass flux … … 435 435 REAL(rstd), INTENT(INOUT) :: mass(iim*jjm,llm) 436 436 REAL(rstd), INTENT(INOUT) :: qi(iim*jjm,llm) 437 REAL(rstd), INTENT(INOUT) :: qfluxt(3*iim*jjm,llm) ! time-integrated tracer flux 437 438 438 439 REAL(rstd) :: dq,dmass,qe,ed(3), newmass -
codes/icosagcm/devel/src/transport/advect_tracer.f90
r533 r583 1 1 MODULE advect_tracer_mod 2 2 USE icosa 3 USE advect_mod 3 4 IMPLICIT NONE 4 5 PRIVATE … … 25 26 26 27 SUBROUTINE init_advect_tracer 27 USE advect_mod28 28 USE omp_para 29 29 REAL(rstd),POINTER :: tangent(:,:) … … 54 54 END SUBROUTINE init_advect_tracer 55 55 56 SUBROUTINE advect_tracer(f_hfluxt, f_wfluxt,f_u, f_q,f_rhodz) 57 USE advect_mod 56 SUBROUTINE advect_tracer(diagflux_on, f_hfluxt, f_wfluxt,f_u, f_q,f_rhodz,f_qfluxt) 58 57 USE mpipara 59 58 USE trace 60 59 USE write_field_mod 61 60 USE tracer_mod 62 IMPLICIT NONE 63 61 LOGICAL, INTENT(IN) :: diagflux_on 64 62 TYPE(t_field),POINTER :: f_hfluxt(:) ! time-integrated horizontal mass flux 65 63 TYPE(t_field),POINTER :: f_wfluxt(:) ! time-integrated vertical mass flux … … 67 65 TYPE(t_field),POINTER :: f_q(:) ! tracer 68 66 TYPE(t_field),POINTER :: f_rhodz(:) ! mass field at beginning of macro time step 67 TYPE(t_field),POINTER :: f_qfluxt(:) ! time-integrated horizontal tracer flux 69 68 70 69 REAL(rstd),POINTER :: q(:,:,:), normal(:,:), tangent(:,:), sqrt_leng(:), gradq3d(:,:,:), cc(:,:,:) 71 REAL(rstd),POINTER :: hfluxt(:,:), wfluxt(:,:) 70 REAL(rstd),POINTER :: hfluxt(:,:), wfluxt(:,:), qfluxt(:,:,:) 72 71 REAL(rstd),POINTER :: rhodz(:,:), u(:,:) 73 72 ! temporary shared variable for vlz … … 170 169 rhodz = f_rhodz(ind) 171 170 hfluxt = f_hfluxt(ind) 171 qfluxt = f_qfluxt(ind) 172 172 gradq3d = f_gradq3d(ind) 173 CALL compute_advect_horiz(k==nq_last, hfluxt,cc,gradq3d, rhodz,q(:,:,k))173 CALL compute_advect_horiz(k==nq_last,diagflux_on, hfluxt,cc,gradq3d, rhodz,q(:,:,k),qfluxt(:,:,k)) 174 174 END DO 175 175 ENDIF … … 214 214 USE trace 215 215 USE omp_para 216 IMPLICIT NONE217 216 LOGICAL, INTENT(IN) :: update_mass 218 217 REAL(rstd), INTENT(IN) :: fac, wfluxt(iim*jjm,llm+1) ! vertical mass flux
Note: See TracChangeset
for help on using the changeset viewer.