Changeset 380
- Timestamp:
- 05/25/16 10:00:02 (8 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
codes/icosagcm/trunk/src/advect_tracer.f90
r364 r380 59 59 USE trace 60 60 USE write_field_mod 61 USE tracer_mod 61 62 IMPLICIT NONE 62 63 … … 76 77 REAL(rstd),POINTER :: wq(:,:) ! time-integrated flux of q 77 78 78 INTEGER :: ind,k 79 INTEGER :: ind,k, nq_last 79 80 LOGICAL,SAVE :: first=.TRUE. 80 81 !$OMP THREADPRIVATE(first) … … 93 94 94 95 IF(nqtot<1) RETURN 96 nq_last=-1 97 98 DO k = 1, nqtot 99 IF (advection_scheme(k)==advect_vanleer) nq_last=k 100 ENDDO 101 102 IF(nq_last<0) RETURN 103 95 104 CALL trace_start("advect_tracer") 96 105 … … 123 132 124 133 DO k = 1, nqtot 125 CALL vlz(k==nqtot,0.5, wfluxt,rhodz,q(:,:,k),1,dzqw, adzqw, dzq, wq)134 IF (advection_scheme(k)==advect_vanleer) CALL vlz(k==nq_last,0.5, wfluxt,rhodz,q(:,:,k),1,dzqw, adzqw, dzq, wq) 126 135 END DO 127 136 … … 135 144 ! horizontal transport - split in two to place transfer of gradq3d 136 145 DO k = 1, nqtot 137 DO ind=1,ndomain 146 IF (advection_scheme(k)==advect_vanleer) THEN 147 148 DO ind=1,ndomain 138 149 IF (.NOT. assigned_domain(ind)) CYCLE 139 150 CALL swap_dimensions(ind) … … 144 155 CALL compute_gradq3d(q(:,:,k),sqrt_leng,gradq3d,xyz_i,xyz_v) 145 156 146 END DO147 148 CALL send_message(f_gradq3d,req_gradq3d)149 CALL wait_message(req_cc)150 CALL wait_message(req_gradq3d)151 152 153 DO ind=1,ndomain157 END DO 158 159 CALL send_message(f_gradq3d,req_gradq3d) 160 CALL wait_message(req_cc) 161 CALL wait_message(req_gradq3d) 162 163 164 DO ind=1,ndomain 154 165 IF (.NOT. assigned_domain(ind)) CYCLE 155 166 CALL swap_dimensions(ind) … … 160 171 hfluxt = f_hfluxt(ind) 161 172 gradq3d = f_gradq3d(ind) 162 CALL compute_advect_horiz(k==nqtot,hfluxt,cc,gradq3d, rhodz,q(:,:,k)) 163 END DO 173 CALL compute_advect_horiz(k==nq_last,hfluxt,cc,gradq3d, rhodz,q(:,:,k)) 174 END DO 175 ENDIF 164 176 END DO 165 177 … … 180 192 181 193 DO k = 1,nqtot 182 CALL vlz(k==nqtot, 0.5,wfluxt,rhodz, q(:,:,k),0, dzqw, adzqw, dzq, wq)194 IF (advection_scheme(k)==advect_vanleer) CALL vlz(k==nq_last, 0.5,wfluxt,rhodz, q(:,:,k),0, dzqw, adzqw, dzq, wq) 183 195 END DO 184 196
Note: See TracChangeset
for help on using the changeset viewer.