@@ -432,46 +432,29 @@ subroutine physics_update(state, ptend, dt, tend )
432432 if (ptend% ls) then
433433
434434 if (compute_enthalpy_flux) then
435- ! use conserved energy
436- call get_conserved_energy(levels_are_moist, ptend% top_level, ptend% bot_level &
437- , cpairv_loc(:ncol,:), state% T(:ncol,:), state% q(:ncol,:,:), state% pdel(:ncol,:) &
438- , pdel(:ncol,:), te(:ncol,:))
439- te(:ncol,ptend% top_level:ptend% bot_level)= te(:ncol,ptend% top_level:ptend% bot_level) &
440- + ptend% s(:ncol,ptend% top_level:ptend% bot_level)* dt
441- call inv_conserved_energy(levels_are_moist, ptend% top_level, ptend% bot_level &
442- , te(:ncol,:), cpairv_loc(:ncol,:), state% q(:ncol,:,:), state% pdel(:ncol,:) &
443- , pdel(:ncol,:), t_tmp(:ncol,:))
444- if (present (tend)) &
445- tend% dtdt(:ncol,ptend% top_level:ptend% bot_level)= tend% dtdt(:ncol,ptend% top_level:ptend% bot_level) + &
446- (T_tmp(:ncol,ptend% top_level:ptend% bot_level) &
447- - state% t(:ncol,ptend% top_level:ptend% bot_level))/ dt
448- state% T(:ncol,ptend% top_level:ptend% bot_level)= T_tmp(:ncol,ptend% top_level:ptend% bot_level)
449- end if
450-
451- ! if(compute_enthalpy_flux) then
452- ! !use conserved energy
453- ! call get_conserved_energy(levels_are_moist, ptend%top_level, ptend%bot_level, &
454- ! cpairv_loc(:ncol,:), state%T(:ncol,:), state%q(:ncol,:,:), state%pdel(:ncol,:), &
455- ! pdel(:ncol,:), te(:ncol,:))
456- ! te(:ncol,ptend%top_level:ptend%bot_level) = te(:ncol,ptend%top_level:ptend%bot_level) + &
457- ! ptend%s(:ncol,ptend%top_level:ptend%bot_level)*dt
458- ! call inv_conserved_energy(levels_are_moist, ptend%top_level, ptend%bot_level, &
459- ! te(:ncol,:), cpairv_loc(:ncol,:), state%q(:ncol,:,:), state%pdel(:ncol,:), &
460- ! pdel(:ncol,:), t_tmp(:ncol,:))
461- ! if (present(tend)) then
462- ! tend%dtdt(:ncol,ptend%top_level:ptend%bot_level) = tend%dtdt(:ncol,ptend%top_level:ptend%bot_level) + &
463- ! (T_tmp(:ncol,ptend%top_level:ptend%bot_level) - &
464- ! state%t(:ncol,ptend%top_level:ptend%bot_level))/dt
465- ! end if
466- ! state%T(:ncol,ptend%top_level:ptend%bot_level) = T_tmp(:ncol,ptend%top_level:ptend%bot_level)
467- ! else
468- ! do k = ptend%top_level, ptend%bot_level
469- ! state%t(:ncol,k) = state%t(:ncol,k) + ptend%s(:ncol,k)*dt/cpairv_loc(:ncol,k)
470- ! if (present(tend)) then
471- ! tend%dtdt(:ncol,k) = tend%dtdt(:ncol,k) + ptend%s(:ncol,k)/cpairv_loc(:ncol,k)
472- ! end if
473- ! end do
474- ! endif
435+ ! use conserved energy (pe and te are output variables in get_conserved_energy call)
436+ call get_conserved_energy(levels_are_moist, ptend% top_level, ptend% bot_level, &
437+ cpairv_loc(:ncol,:), state% T(:ncol,:), state% q(:ncol,:,:), state% pdel(:ncol,:), &
438+ pdel(:ncol,:), te(:ncol,:))
439+ te(:ncol,ptend% top_level:ptend% bot_level) = te(:ncol,ptend% top_level:ptend% bot_level) + &
440+ ptend% s(:ncol,ptend% top_level:ptend% bot_level)* dt
441+ call inv_conserved_energy(levels_are_moist, ptend% top_level, ptend% bot_level, &
442+ te(:ncol,:), cpairv_loc(:ncol,:), state% q(:ncol,:,:), state% pdel(:ncol,:), &
443+ pdel(:ncol,:), t_tmp(:ncol,:))
444+ if (present (tend)) then
445+ tend% dtdt(:ncol,ptend% top_level:ptend% bot_level) = tend% dtdt(:ncol,ptend% top_level:ptend% bot_level) + &
446+ (T_tmp(:ncol,ptend% top_level:ptend% bot_level) - &
447+ state% t(:ncol,ptend% top_level:ptend% bot_level))/ dt
448+ end if
449+ state% T(:ncol,ptend% top_level:ptend% bot_level) = T_tmp(:ncol,ptend% top_level:ptend% bot_level)
450+ else
451+ do k = ptend% top_level, ptend% bot_level
452+ state% t(:ncol,k) = state% t(:ncol,k) + ptend% s(:ncol,k)* dt/ cpairv_loc(:ncol,k)
453+ if (present (tend)) then
454+ tend% dtdt(:ncol,k) = tend% dtdt(:ncol,k) + ptend% s(:ncol,k)/ cpairv_loc(:ncol,k)
455+ end if
456+ end do
457+ endif
475458
476459 end if
477460
0 commit comments