Changeset 584
- Timestamp:
- 10/13/17 21:29:09 (7 years ago)
- Location:
- codes/icosagcm/devel/src
- Files:
-
- 5 edited
Legend:
- Unmodified
- Added
- Removed
-
codes/icosagcm/devel/src/diagnostics/check_conserve.f90
r533 r584 299 299 REAL(rstd),INTENT(INOUT) :: e, s, AAM_mass, AAM_vel, rmsv 300 300 301 REAL(rstd) :: ucenter(iim*jjm, 3,llm)301 REAL(rstd) :: ucenter(iim*jjm,llm,3) 302 302 REAL(rstd) :: ulon(iim*jjm,llm) 303 303 REAL(rstd) :: ulat(iim*jjm,llm) -
codes/icosagcm/devel/src/diagnostics/wind.f90
r533 r584 1 1 MODULE wind_mod 2 3 CONTAINS 4 5 SUBROUTINE un2ulonlat(f_u, f_ulon, f_ulat) 2 USE omp_para 6 3 USE icosa 7 4 IMPLICIT NONE 5 PRIVATE 6 7 PUBLIC :: compute_wind_centered, compute_wind_centered_lonlat_compound, & 8 compute_wind_centered_from_lonlat_compound, compute_wind_perp_from_lonlat_compound, & 9 un2ulonlat, ulonlat2un, compute_wind2d_perp_from_lonlat_compound 10 11 CONTAINS 12 13 SUBROUTINE un2ulonlat(f_u, f_ulon, f_ulat) 8 14 TYPE(t_field), POINTER :: f_u(:) ! IN : normal velocity components on edges 9 TYPE(t_field), POINTER :: f_ulon(:), f_ulat(:) ! OUT : velocity reconstructed at hexagons 10 15 TYPE(t_field), POINTER :: f_ulon(:), f_ulat(:) ! OUT : velocity reconstructed at hexagons 11 16 REAL(rstd),POINTER :: u(:,:), ulon(:,:), ulat(:,:) 12 17 INTEGER :: ind … … 25 30 26 31 SUBROUTINE ulonlat2un(f_ulon, f_ulat,f_u) 27 USE icosa28 IMPLICIT NONE29 32 TYPE(t_field), POINTER :: f_ulon(:), f_ulat(:) ! IN : velocity reconstructed at hexagons 30 33 TYPE(t_field), POINTER :: f_u(:) ! OUT : normal velocity components on edges … … 46 49 47 50 SUBROUTINE compute_wind_centered(ue,ucenter) 48 USE icosa49 USE omp_para50 IMPLICIT NONE51 51 REAL(rstd) :: ue(3*iim*jjm,llm) 52 REAL(rstd) :: ucenter(iim*jjm, 3,llm)52 REAL(rstd) :: ucenter(iim*jjm,llm,3) 53 53 INTEGER :: i,j,ij,l 54 54 … … 57 57 DO i=ii_begin,ii_end 58 58 ij=(j-1)*iim+i 59 ucenter(ij,:,l)=1/Ai(ij)* & 59 ! Perot reconstruction based on Gauss' theorem 60 ! u = sum( u.edge_normal * edge_length * (edge_midpoint-cell_centroid) ) /cell_area 61 ucenter(ij,l,:)=1/Ai(ij)* & 60 62 ( ne(ij,right)*ue(ij+u_right,l)*le(ij+u_right)*((xyz_v(ij+z_rdown,:)+xyz_v(ij+z_rup,:))/2-centroid(ij,:)) & 61 63 + ne(ij,rup)*ue(ij+u_rup,l)*le(ij+u_rup)*((xyz_v(ij+z_rup,:)+xyz_v(ij+z_up,:))/2-centroid(ij,:)) & … … 72 74 73 75 SUBROUTINE compute_wind_on_edge(ue,uedge) 74 USE icosa75 USE omp_para76 77 IMPLICIT NONE78 76 REAL(rstd) :: ue(3*iim*jjm,llm) 79 REAL(rstd) :: uedge(3*iim*jjm, 3,llm)77 REAL(rstd) :: uedge(3*iim*jjm,llm,3) 80 78 81 79 REAL(rstd) :: ut(3*iim*jjm,llm) … … 88 86 DO i=ii_begin,ii_end 89 87 ij=(j-1)*iim+i 90 uedge(ij+u_right, :,l)=ue(ij+u_right,l)*ep_e(ij+u_right,:)*ne(ij,right) + ut(ij+u_right,l)*et_e(ij+u_right,:)*ne(ij,right)91 uedge(ij+u_lup, :,l)=ue(ij+u_lup,l)*ep_e(ij+u_lup,:)*ne(ij,lup) + ut(ij+u_lup,l)*et_e(ij+u_lup,:)*ne(ij,lup)92 uedge(ij+u_ldown, :,l)=ue(ij+u_ldown,l)*ep_e(ij+u_ldown,:)*ne(ij,ldown) + ut(ij+u_ldown,l)*et_e(ij+u_ldown,:)*ne(ij,ldown)88 uedge(ij+u_right,l,:)=ue(ij+u_right,l)*ep_e(ij+u_right,:)*ne(ij,right) + ut(ij+u_right,l)*et_e(ij+u_right,:)*ne(ij,right) 89 uedge(ij+u_lup,l,:)=ue(ij+u_lup,l)*ep_e(ij+u_lup,:)*ne(ij,lup) + ut(ij+u_lup,l)*et_e(ij+u_lup,:)*ne(ij,lup) 90 uedge(ij+u_ldown,l,:)=ue(ij+u_ldown,l)*ep_e(ij+u_ldown,:)*ne(ij,ldown) + ut(ij+u_ldown,l)*et_e(ij+u_ldown,:)*ne(ij,ldown) 93 91 ENDDO 94 92 ENDDO … … 100 98 101 99 SUBROUTINE compute_tangential_compound(ue,ut) 102 USE icosa103 USE omp_para104 IMPLICIT NONE105 100 REAL(rstd) :: ue(3*iim*jjm,llm) 106 101 REAL(rstd) :: ut(3*iim*jjm,llm) … … 155 150 END SUBROUTINE compute_tangential_compound 156 151 157 SUBROUTINE compute_wind_lonlat_compound(u, ulon, ulat) 158 USE icosa 159 USE omp_para 160 161 IMPLICIT NONE 162 REAL(rstd) :: u(3*iim*jjm,3,llm) 163 REAL(rstd) :: ulon(3*iim*jjm,3,llm) 164 REAL(rstd) :: ulat(3*iim*jjm,3,llm) 165 166 INTEGER :: i,j,ij,l 167 152 ! SUBROUTINE compute_wind_lonlat_compound(u, ulon, ulat) 153 ! REAL(rstd) :: u(3*iim*jjm,3,llm) 154 ! REAL(rstd) :: ulon(3*iim*jjm,3,llm) 155 ! REAL(rstd) :: ulat(3*iim*jjm,3,llm) 156 ! 157 ! INTEGER :: i,j,ij,l 158 ! 159 ! 160 ! DO l=ll_begin,ll_end 161 ! DO j=jj_begin-1,jj_end+1 162 ! DO i=ii_begin-1,ii_end+1 163 ! ij=(j-1)*iim+i 164 ! ulon(ij+u_right,:,l)=sum(u(ij+u_right,:,l)*elon_e(ij+u_right,:))*elon_e(ij+u_right,:) 165 ! ulon(ij+u_lup,:,l)=sum(u(ij+u_lup,:,l)*elon_e(ij+u_lup,:))*elon_e(ij+u_lup,:) 166 ! ulon(ij+u_ldown,:,l)=sum(u(ij+u_ldown,:,l)*elon_e(ij+u_ldown,:))*elon_e(ij+u_ldown,:) 167 ! 168 ! ulat(ij+u_right,:,l)=sum(u(ij+u_right,:,l)*elat_e(ij+u_right,:))*elat_e(ij+u_right,:) 169 ! ulat(ij+u_lup,:,l)=sum(u(ij+u_lup,:,l)*elat_e(ij+u_lup,:))*elat_e(ij+u_lup,:) 170 ! ulat(ij+u_ldown,:,l)=sum(u(ij+u_ldown,:,l)*elat_e(ij+u_ldown,:))*elat_e(ij+u_ldown,:) 171 ! 172 ! ENDDO 173 ! ENDDO 174 ! ENDDO 175 ! 176 ! END SUBROUTINE compute_wind_lonlat_compound 177 178 SUBROUTINE compute_wind_from_lonlat_compound(ulon, ulat, u) 179 REAL(rstd) :: u(3*iim*jjm,llm,3) 180 REAL(rstd) :: ulon(3*iim*jjm,llm) 181 REAL(rstd) :: ulat(3*iim*jjm,llm) 182 183 INTEGER :: i,j,ij,l 168 184 169 185 DO l=ll_begin,ll_end … … 171 187 DO i=ii_begin-1,ii_end+1 172 188 ij=(j-1)*iim+i 173 ulon(ij+u_right,:,l)=sum(u(ij+u_right,:,l)*elon_e(ij+u_right,:))*elon_e(ij+u_right,:) 174 ulon(ij+u_lup,:,l)=sum(u(ij+u_lup,:,l)*elon_e(ij+u_lup,:))*elon_e(ij+u_lup,:) 175 ulon(ij+u_ldown,:,l)=sum(u(ij+u_ldown,:,l)*elon_e(ij+u_ldown,:))*elon_e(ij+u_ldown,:) 176 177 ulat(ij+u_right,:,l)=sum(u(ij+u_right,:,l)*elat_e(ij+u_right,:))*elat_e(ij+u_right,:) 178 ulat(ij+u_lup,:,l)=sum(u(ij+u_lup,:,l)*elat_e(ij+u_lup,:))*elat_e(ij+u_lup,:) 179 ulat(ij+u_ldown,:,l)=sum(u(ij+u_ldown,:,l)*elat_e(ij+u_ldown,:))*elat_e(ij+u_ldown,:) 180 181 ENDDO 182 ENDDO 183 ENDDO 184 185 END SUBROUTINE compute_wind_lonlat_compound 186 187 SUBROUTINE compute_wind_from_lonlat_compound(ulon, ulat, u) 188 USE icosa 189 USE omp_para 190 191 IMPLICIT NONE 192 REAL(rstd) :: u(3*iim*jjm,3,llm) 193 REAL(rstd) :: ulon(3*iim*jjm,llm) 194 REAL(rstd) :: ulat(3*iim*jjm,llm) 195 196 INTEGER :: i,j,ij,l 197 198 DO l=ll_begin,ll_end 199 DO j=jj_begin-1,jj_end+1 200 DO i=ii_begin-1,ii_end+1 201 ij=(j-1)*iim+i 202 u(ij+u_right,:,l)=ulon(ij+u_right,l)*elon_e(ij+u_right,:)+ ulat(ij+u_right,l)*elat_e(ij+u_right,:) 203 u(ij+u_lup,:,l)=ulon(ij+u_lup,l)*elon_e(ij+u_lup,:) + ulat(ij+u_lup,l)*elat_e(ij+u_lup,:) 204 u(ij+u_ldown,:,l)=ulon(ij+u_ldown,l)*elon_e(ij+u_ldown,:) + ulat(ij+u_ldown,l)*elat_e(ij+u_ldown,:) 189 u(ij+u_right,l,:)=ulon(ij+u_right,l)*elon_e(ij+u_right,:)+ ulat(ij+u_right,l)*elat_e(ij+u_right,:) 190 u(ij+u_lup,l,:)=ulon(ij+u_lup,l)*elon_e(ij+u_lup,:) + ulat(ij+u_lup,l)*elat_e(ij+u_lup,:) 191 u(ij+u_ldown,l,:)=ulon(ij+u_ldown,l)*elon_e(ij+u_ldown,:) + ulat(ij+u_ldown,l)*elat_e(ij+u_ldown,:) 205 192 ENDDO 206 193 ENDDO … … 210 197 211 198 SUBROUTINE compute_wind_centered_from_lonlat_compound(ulon, ulat, u) 212 USE icosa 213 USE omp_para 214 215 IMPLICIT NONE 216 REAL(rstd) :: u(iim*jjm,3,llm) 199 REAL(rstd) :: u(iim*jjm,llm,3) 217 200 REAL(rstd) :: ulon(iim*jjm,llm) 218 201 REAL(rstd) :: ulat(iim*jjm,llm) 219 220 202 INTEGER :: i,j,ij,l 221 203 DO l=ll_begin,ll_end … … 223 205 DO i=ii_begin-1,ii_end+1 224 206 ij=(j-1)*iim+i 225 u(ij,:,l)=ulon(ij,l)*elon_i(ij,:)+ ulat(ij,l)*elat_i(ij,:) 226 ENDDO 227 ENDDO 228 ENDDO 229 207 u(ij,l,:)=ulon(ij,l)*elon_i(ij,:)+ ulat(ij,l)*elat_i(ij,:) 208 ENDDO 209 ENDDO 210 ENDDO 230 211 END SUBROUTINE compute_wind_centered_from_lonlat_compound 231 212 232 213 SUBROUTINE compute_wind2D_from_lonlat_compound(ulon, ulat, u) 233 USE icosa234 235 IMPLICIT NONE236 214 REAL(rstd) :: u(3*iim*jjm,3) 237 215 REAL(rstd) :: ulon(3*iim*jjm) … … 252 230 253 231 SUBROUTINE compute_wind_perp_from_lonlat_compound(ulon, ulat, up) 254 USE icosa255 USE omp_para256 257 IMPLICIT NONE258 232 REAL(rstd) :: up(3*iim*jjm,llm) 259 233 REAL(rstd) :: ulon(3*iim*jjm,llm) 260 234 REAL(rstd) :: ulat(3*iim*jjm,llm) 261 REAL(rstd) :: u(3*iim*jjm, 3,llm)235 REAL(rstd) :: u(3*iim*jjm,llm,3) 262 236 263 237 INTEGER :: i,j,ij,l … … 269 243 DO i=ii_begin-1,ii_end+1 270 244 ij=(j-1)*iim+i 271 up(ij+u_right,l)=sum(u(ij+u_right, :,l)*ep_e(ij+u_right,:))272 up(ij+u_lup,l)=sum(u(ij+u_lup, :,l)*ep_e(ij+u_lup,:))273 up(ij+u_ldown,l)=sum(u(ij+u_ldown, :,l)*ep_e(ij+u_ldown,:))245 up(ij+u_right,l)=sum(u(ij+u_right,l,:)*ep_e(ij+u_right,:)) 246 up(ij+u_lup,l)=sum(u(ij+u_lup,l,:)*ep_e(ij+u_lup,:)) 247 up(ij+u_ldown,l)=sum(u(ij+u_ldown,l,:)*ep_e(ij+u_ldown,:)) 274 248 ENDDO 275 249 ENDDO … … 279 253 280 254 SUBROUTINE compute_wind2D_perp_from_lonlat_compound(ulon, ulat, up) 281 USE icosa282 283 IMPLICIT NONE284 255 REAL(rstd) :: up(3*iim*jjm) 285 256 REAL(rstd) :: ulon(3*iim*jjm) … … 302 273 303 274 SUBROUTINE compute_wind_centered_lonlat_compound(uc, ulon, ulat) 304 USE icosa 305 USE omp_para 306 307 IMPLICIT NONE 308 REAL(rstd) :: uc(iim*jjm,3,llm) 275 REAL(rstd) :: uc(iim*jjm,llm,3) 309 276 REAL(rstd) :: ulon(iim*jjm,llm) 310 277 REAL(rstd) :: ulat(iim*jjm,llm) 311 278 312 279 INTEGER :: i,j,ij,l 313 314 315 DO l=ll_begin,ll_end 316 DO j=jj_begin,jj_end 317 DO i=ii_begin,ii_end 318 ij=(j-1)*iim+i 319 ulon(ij,l)=sum(uc(ij,:,l)*elon_i(ij,:)) 320 ulat(ij,l)=sum(uc(ij,:,l)*elat_i(ij,:)) 280 281 DO l=ll_begin,ll_end 282 DO j=jj_begin,jj_end 283 DO i=ii_begin,ii_end 284 ij=(j-1)*iim+i 285 ulon(ij,l)=sum(uc(ij,l,:)*elon_i(ij,:)) 286 ulat(ij,l)=sum(uc(ij,l,:)*elat_i(ij,:)) 321 287 ENDDO 322 288 ENDDO … … 326 292 327 293 SUBROUTINE compute_wind_centered_from_wind_lonlat_centered(ulon, ulat,uc) 328 USE icosa329 USE omp_para330 331 IMPLICIT NONE332 294 REAL(rstd) :: ulon(iim*jjm,llm) 333 295 REAL(rstd) :: ulat(iim*jjm,llm) 334 REAL(rstd) :: uc(iim*jjm, 3,llm)335 336 INTEGER :: i,j,ij,l 337 338 339 DO l=ll_begin,ll_end 340 DO j=jj_begin,jj_end 341 DO i=ii_begin,ii_end 342 ij=(j-1)*iim+i 343 uc(ij, :,l)=ulon(ij,l)*elon_i(ij,:)+ulat(ij,l)*elat_i(ij,:)296 REAL(rstd) :: uc(iim*jjm,llm,3) 297 298 INTEGER :: i,j,ij,l 299 300 301 DO l=ll_begin,ll_end 302 DO j=jj_begin,jj_end 303 DO i=ii_begin,ii_end 304 ij=(j-1)*iim+i 305 uc(ij,l,:)=ulon(ij,l)*elon_i(ij,:)+ulat(ij,l)*elat_i(ij,:) 344 306 ENDDO 345 307 ENDDO … … 348 310 END SUBROUTINE compute_wind_centered_from_wind_lonlat_centered 349 311 350 351 352 312 SUBROUTINE compute_wind_perp_from_wind_centered(uc,un) 353 USE icosa 354 USE omp_para 355 313 356 314 IMPLICIT NONE 357 REAL(rstd),INTENT(IN) :: uc(iim*jjm, 3,llm)315 REAL(rstd),INTENT(IN) :: uc(iim*jjm,llm,3) 358 316 REAL(rstd),INTENT(OUT) :: un(3*iim*jjm,llm) 359 317 … … 365 323 DO i=ii_begin,ii_end 366 324 ij=(j-1)*iim+i 367 un(ij+u_right,l) = sum(0.5*(uc(ij, :,l) + uc(ij+t_right,:,l))*ep_e(ij+u_right,:))368 un(ij+u_lup,l) = sum(0.5*(uc(ij, :,l) + uc(ij+t_lup,:,l))*ep_e(ij+u_lup,:))369 un(ij+u_ldown,l) = sum(0.5*(uc(ij, :,l) + uc(ij+t_ldown,:,l))*ep_e(ij+u_ldown,:))325 un(ij+u_right,l) = sum(0.5*(uc(ij,l,:) + uc(ij+t_right,l,:))*ep_e(ij+u_right,:)) 326 un(ij+u_lup,l) = sum(0.5*(uc(ij,l,:) + uc(ij+t_lup,l,:))*ep_e(ij+u_lup,:)) 327 un(ij+u_ldown,l) = sum(0.5*(uc(ij,l,:) + uc(ij+t_ldown,l,:))*ep_e(ij+u_ldown,:)) 370 328 ENDDO 371 329 ENDDO … … 376 334 377 335 SUBROUTINE compute_un2ulonlat(un, ulon, ulat) 378 USE icosa379 380 IMPLICIT NONE381 336 REAL(rstd),INTENT(IN) :: un(3*iim*jjm,llm) 382 337 REAL(rstd),INTENT(OUT) :: ulon(iim*jjm,llm) 383 338 REAL(rstd),INTENT(OUT) :: ulat(iim*jjm,llm) 384 339 385 REAL(rstd) :: uc(iim*jjm, 3,llm)340 REAL(rstd) :: uc(iim*jjm,llm,3) 386 341 387 342 CALL compute_wind_centered(un,uc) … … 391 346 392 347 SUBROUTINE compute_ulonlat2un(ulon, ulat,un) 393 USE icosa394 395 IMPLICIT NONE396 348 REAL(rstd),INTENT(IN) :: ulon(iim*jjm,llm) 397 349 REAL(rstd),INTENT(IN) :: ulat(iim*jjm,llm) 398 350 REAL(rstd),INTENT(OUT) :: un(3*iim*jjm,llm) 399 351 400 REAL(rstd) :: uc(iim*jjm, 3,llm)352 REAL(rstd) :: uc(iim*jjm,llm,3) 401 353 402 354 CALL compute_wind_centered_from_wind_lonlat_centered(ulon, ulat, uc) -
codes/icosagcm/devel/src/physics/physics.f90
r533 r584 247 247 248 248 REAL(rstd) :: p(iim*jjm,llm+1) 249 REAL(rstd) :: uc(iim*jjm, 3,llm)249 REAL(rstd) :: uc(iim*jjm,llm,3) 250 250 REAL(rstd) :: ulon(iim*jjm,llm) 251 251 REAL(rstd) :: ulat(iim*jjm,llm) … … 311 311 REAL(rstd) :: dulat(iim*jjm,llm) 312 312 REAL(rstd) :: ue(3*iim*jjm,llm) 313 REAL(rstd) :: duc(iim*jjm, 3,llm)313 REAL(rstd) :: duc(iim*jjm,llm,3) 314 314 REAL(rstd) :: dt2, due 315 315 INTEGER :: i,j,ij,l … … 321 321 DO i=ii_begin,ii_end 322 322 ij=(j-1)*iim+i 323 due = sum( (duc(ij, :,l) + duc(ij+t_right,:,l))*ep_e(ij+u_right,:) )323 due = sum( (duc(ij,l,:) + duc(ij+t_right,l,:))*ep_e(ij+u_right,:) ) 324 324 ue(ij+u_right,l) = ue(ij+u_right,l) + dt2*due 325 325 326 due = sum( (duc(ij, :,l) + duc(ij+t_lup,:,l))*ep_e(ij+u_lup,:) )326 due = sum( (duc(ij,l,:) + duc(ij+t_lup,l,:))*ep_e(ij+u_lup,:) ) 327 327 ue(ij+u_lup,l)=ue(ij+u_lup,l) + dt2*due 328 328 329 due = sum( (duc(ij, :,l) + duc(ij+t_ldown,:,l))*ep_e(ij+u_ldown,:) )329 due = sum( (duc(ij,l,:) + duc(ij+t_ldown,l,:))*ep_e(ij+u_ldown,:) ) 330 330 ue(ij+u_ldown,l)=ue(ij+u_ldown,l) + dt2*due 331 331 ENDDO -
codes/icosagcm/devel/src/physics/physics_lmdz_generic.F90
r533 r584 78 78 CALL allocate_field(f_dq,field_t,type_real,llm,nqtot) 79 79 CALL allocate_field(f_dps,field_t,type_real) 80 CALL allocate_field(f_duc,field_t,type_real, 3,llm)80 CALL allocate_field(f_duc,field_t,type_real,llm,3) 81 81 !$OMP END PARALLEL 82 82 … … 362 362 DO i=ii_begin,ii_end 363 363 ij=(j-1)*iim+i 364 duc(ij, :,l)=dulon(ij,l)*elon_i(ij,:)+dulat(ij,l)*elat_i(ij,:)364 duc(ij,l,:)=dulon(ij,l)*elon_i(ij,:)+dulat(ij,l)*elat_i(ij,:) 365 365 ENDDO 366 366 ENDDO … … 371 371 DO i=ii_begin,ii_end 372 372 ij=(j-1)*iim+i 373 u(ij+u_right,l) = u(ij+u_right,l) + dtphy * sum( 0.5*(duc(ij, :,l) + duc(ij+t_right,:,l))*ep_e(ij+u_right,:) )374 u(ij+u_lup,l) = u(ij+u_lup,l) + dtphy * sum( 0.5*(duc(ij, :,l) + duc(ij+t_lup,:,l))*ep_e(ij+u_lup,:) )375 u(ij+u_ldown,l) = u(ij+u_ldown,l) + dtphy*sum( 0.5*(duc(ij, :,l) + duc(ij+t_ldown,:,l))*ep_e(ij+u_ldown,:) )373 u(ij+u_right,l) = u(ij+u_right,l) + dtphy * sum( 0.5*(duc(ij,l,:) + duc(ij+t_right,l,:))*ep_e(ij+u_right,:) ) 374 u(ij+u_lup,l) = u(ij+u_lup,l) + dtphy * sum( 0.5*(duc(ij,l,:) + duc(ij+t_lup,l,:))*ep_e(ij+u_lup,:) ) 375 u(ij+u_ldown,l) = u(ij+u_ldown,l) + dtphy*sum( 0.5*(duc(ij,l,:) + duc(ij+t_ldown,l,:))*ep_e(ij+u_ldown,:) ) 376 376 ENDDO 377 377 ENDDO -
codes/icosagcm/devel/src/time/timeloop_gcm.f90
r569 r584 168 168 USE caldyn_mod 169 169 USE advect_tracer_mod 170 USE diagflux_mod 170 171 USE physics_mod 171 172 USE mpipara … … 213 214 CALL check_conserve(f_ps,f_dps,f_u,f_theta_rhodz,f_phis,itau0) 214 215 215 C ALLtrace_on216 Call trace_on 216 217 217 218 IF (xios_output) THEN ! we must call update_calendar before any XIOS output … … 298 299 299 300 IF(MOD(it,itau_adv)==0) THEN 300 CALL advect_tracer( f_hfluxt,f_wfluxt,f_u, f_q,f_rhodz) ! update q and rhodz after RK step301 CALL advect_tracer(diagflux_on, f_hfluxt,f_wfluxt,f_u, f_q,f_rhodz,f_qfluxt) ! update q and rhodz after RK step 301 302 fluxt_zero=.TRUE. 302 303 ! FIXME : check that rhodz is consistent with ps
Note: See TracChangeset
for help on using the changeset viewer.