Skip to content

Commit 60bf8a7

Browse files
author
mvertens
committed
physics/cam/qneg_module.F90
fixed problem if refactor - this will change answers
1 parent a698021 commit 60bf8a7

2 files changed

Lines changed: 27 additions & 48 deletions

File tree

src/physics/cam/physics_types.F90

Lines changed: 23 additions & 40 deletions
Original file line numberDiff line numberDiff line change
@@ -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

src/physics/cam/qneg_module.F90

Lines changed: 4 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -325,7 +325,7 @@ subroutine qneg4 (subnam, lchnk, ncol, ztodt, &
325325
! Author: J. Olson
326326
!
327327
!-----------------------------------------------------------------------
328-
use physconst, only: gravit, latvap, latice !+tht
328+
use physconst, only: gravit, latvap, latice
329329
use constituents, only: qmin
330330
use cam_history, only: outfld
331331

@@ -391,18 +391,14 @@ subroutine qneg4 (subnam, lchnk, ncol, ztodt, &
391391
qflx (i,1) = qflx (i,1) - excess(i)
392392
lhflx(i) = lhflx(i) - excess(i)*latvap
393393
shflx(i) = shflx(i) + excess(i)*latvap
394+
if (present(seflx)) then
395+
seflx(i) = seflx(i) + excess(i)*(latvap+latice)
396+
end if
394397
if (index > 0) then
395398
qneg4_warn_num(index) = qneg4_warn_num(index) + 1
396399
end if
397400
end if
398401
end do
399-
if (present(seflx)) then
400-
do i = 1, ncol
401-
if (excess(i) < 0._r8) then
402-
seflx(i) = seflx(i) + excess(i)*(latvap+latice)
403-
end if
404-
end do
405-
end if
406402

407403
! Maybe output bad values
408404
if ((cnst_outfld((2*pcnst)+1)) .and. (worst < worst_reset)) then

0 commit comments

Comments
 (0)