diff --git a/physics/samfdeepcnv.f b/physics/samfdeepcnv.f index ea92fda7f..bb33b20cf 100644 --- a/physics/samfdeepcnv.f +++ b/physics/samfdeepcnv.f @@ -265,7 +265,7 @@ subroutine samfdeepcnv_run (im,km,itc,ntc,cliq,cp,cvap, & & dellae(im,km,ntr), & dellau(im,km), dellav(im,km), hcko(im,km), & ucko(im,km), vcko(im,km), qcko(im,km), - & ecko(im,km,ntr), + & ecko(im,km,ntr),ercko(im,km,ntr), & eta(im,km), etad(im,km), zi(im,km), & qrcko(im,km), qrcdo(im,km), & pwo(im,km), pwdo(im,km), c0t(im,km), @@ -585,6 +585,7 @@ subroutine samfdeepcnv_run (im,km,itc,ntc,cliq,cp,cvap, & ctr(i,k,kk) = qtr(i,k,n) ctro(i,k,kk) = qtr(i,k,n) ecko(i,k,kk) = 0. + ercko(i,k,kk) = 0. ecdo(i,k,kk) = 0. endif enddo @@ -1148,6 +1149,7 @@ subroutine samfdeepcnv_run (im,km,itc,ntc,cliq,cp,cvap, & if(cnvflg(i)) then indx = kb(i) ecko(i,indx,n) = ctro(i,indx,n) + ercko(i,indx,n) = ctro(i,indx,n) endif enddo enddo @@ -1199,6 +1201,7 @@ subroutine samfdeepcnv_run (im,km,itc,ntc,cliq,cp,cvap, & factor = 1. + tem ecko(i,k,n) = ((1.-tem)*ecko(i,k-1,n)+tem* & (ctro(i,k,n)+ctro(i,k-1,n)))/factor + ercko(i,k,n) = ecko(i,k,n) endif endif enddo @@ -1217,6 +1220,7 @@ subroutine samfdeepcnv_run (im,km,itc,ntc,cliq,cp,cvap, & factor = 1. + tem ecko(i,k,kk) = ((1. - tem) * ecko(i,k-1,kk) + tem * & (ctro(i,k,kk) + ctro(i,k-1,kk))) / factor + ercko(i,k,kk) = ecko(i,k,kk) chem_c(i,k,n) = fscav(n) * ecko(i,k,kk) tem = chem_c(i,k,n) / (1. + c0t(i,k) * dz) chem_pw(i,k,n) = c0t(i,k) * dz * tem * eta(i,k-1) @@ -1464,12 +1468,10 @@ subroutine samfdeepcnv_run (im,km,itc,ntc,cliq,cp,cvap, & qrch = qeso(i,k) & + gamma * dbyo(i,k) / (hvap * (1. + gamma)) cj - tem = 0.5 * (xlamue(i,k)+xlamue(i,k-1)) * dz - tem1 = 0.25 * (xlamud(i,k)+xlamud(i,k-1)) * dz + tem = 0.25 * (xlamue(i,k)+xlamue(i,k-1)) * dz tem = cq * tem - tem1 = cq * tem1 - factor = 1. + tem - tem1 - qcko(i,k) = ((1.-tem1)*qcko(i,k-1)+tem*0.5* + factor = 1. + tem + qcko(i,k) = ((1.-tem)*qcko(i,k-1)+tem* & (qo(i,k)+qo(i,k-1)))/factor qrcko(i,k) = qcko(i,k) cj @@ -1641,12 +1643,10 @@ subroutine samfdeepcnv_run (im,km,itc,ntc,cliq,cp,cvap, & qrch = qeso(i,k) & + gamma * dbyo(i,k) / (hvap * (1. + gamma)) cj - tem = 0.5 * (xlamue(i,k)+xlamue(i,k-1)) * dz - tem1 = 0.25 * (xlamud(i,k)+xlamud(i,k-1)) * dz + tem = 0.25 * (xlamue(i,k)+xlamue(i,k-1)) * dz tem = cq * tem - tem1 = cq * tem1 - factor = 1. + tem - tem1 - qcko(i,k) = ((1.-tem1)*qcko(i,k-1)+tem*0.5* + factor = 1. + tem + qcko(i,k) = ((1.-tem)*qcko(i,k-1)+tem* & (qo(i,k)+qo(i,k-1)))/factor qrcko(i,k) = qcko(i,k) cj @@ -1955,17 +1955,10 @@ subroutine samfdeepcnv_run (im,km,itc,ntc,cliq,cp,cvap, & ! detad = etad(i,k+1) - etad(i,k) cj dz = zi(i,k+1) - zi(i,k) - if(k >= kd94(i)) then - tem = xlamde * dz - tem1 = 0.5 * xlamdd * dz - else - tem = xlamde * dz - tem1 = 0.5 * (xlamd(i)+xlamdd) * dz - endif + tem = 0.5 * xlamde * dz tem = cq * tem - tem1 = cq * tem1 - factor = 1. + tem - tem1 - qcdo(i,k) = ((1.-tem1)*qrcdo(i,k+1)+tem*0.5* + factor = 1. + tem + qcdo(i,k) = ((1.-tem)*qrcdo(i,k+1)+tem* & (qo(i,k)+qo(i,k+1)))/factor cj ! pwdo(i,k) = etad(i,k+1) * qcdo(i,k+1) - @@ -2153,7 +2146,7 @@ subroutine samfdeepcnv_run (im,km,itc,ntc,cliq,cp,cvap, & if(k > jmin(i)) adw = 0. dp = 1000. * del(i,k) cj - tem1 = -eta(i,k) * ecko(i,k,n) + tem1 = -eta(i,k) * ercko(i,k,n) tem2 = -eta(i,k-1) * ecko(i,k-1,n) ptem1 = -etad(i,k) * ecdo(i,k,n) ptem2 = -etad(i,k-1) * ecdo(i,k-1,n) @@ -2512,12 +2505,10 @@ subroutine samfdeepcnv_run (im,km,itc,ntc,cliq,cp,cvap, & xqrch = qeso(i,k) & + gamma * xdby / (hvap * (1. + gamma)) cj - tem = 0.5 * (xlamue(i,k)+xlamue(i,k-1)) * dz - tem1 = 0.25 * (xlamud(i,k)+xlamud(i,k-1)) * dz + tem = 0.25 * (xlamue(i,k)+xlamue(i,k-1)) * dz tem = cq * tem - tem1 = cq * tem1 - factor = 1. + tem - tem1 - qcko(i,k) = ((1.-tem1)*qcko(i,k-1)+tem*0.5* + factor = 1. + tem + qcko(i,k) = ((1.-tem)*qcko(i,k-1)+tem* & (qo(i,k)+qo(i,k-1)))/factor cj dq = eta(i,k) * (qcko(i,k) - xqrch) @@ -2603,17 +2594,10 @@ subroutine samfdeepcnv_run (im,km,itc,ntc,cliq,cp,cvap, & ! detad = etad(i,k+1) - etad(i,k) cj dz = zi(i,k+1) - zi(i,k) - if(k >= kd94(i)) then - tem = xlamde * dz - tem1 = 0.5 * xlamdd * dz - else - tem = xlamde * dz - tem1 = 0.5 * (xlamd(i)+xlamdd) * dz - endif + tem = 0.5 * xlamde * dz tem = cq * tem - tem1 = cq * tem1 - factor = 1. + tem - tem1 - qcdo(i,k) = ((1.-tem1)*qrcd(i,k+1)+tem*0.5* + factor = 1. + tem + qcdo(i,k) = ((1.-tem)*qrcd(i,k+1)+tem* & (qo(i,k)+qo(i,k+1)))/factor cj ! xpwd = etad(i,k+1) * qcdo(i,k+1) - diff --git a/physics/samfshalcnv.f b/physics/samfshalcnv.f index 24e01b040..364049e4d 100644 --- a/physics/samfshalcnv.f +++ b/physics/samfshalcnv.f @@ -213,7 +213,7 @@ subroutine samfshalcnv_run(im,km,itc,ntc,cliq,cp,cvap, & & dellau(im,km), dellav(im,km), hcko(im,km), & ucko(im,km), vcko(im,km), qcko(im,km), & qrcko(im,km), ecko(im,km,ntr), - & eta(im,km), + & ercko(im,km,ntr), eta(im,km), & zi(im,km), pwo(im,km), c0t(im,km), & sumx(im), tx1(im), cnvwt(im,km) &, rhbar(im) @@ -510,6 +510,7 @@ subroutine samfshalcnv_run(im,km,itc,ntc,cliq,cp,cvap, & ctr(i,k,kk) = qtr(i,k,n) ctro(i,k,kk) = qtr(i,k,n) ecko(i,k,kk) = 0. + ercko(i,k,kk) = 0. endif enddo enddo @@ -964,6 +965,7 @@ subroutine samfshalcnv_run(im,km,itc,ntc,cliq,cp,cvap, & if(cnvflg(i)) then indx = kb(i) ecko(i,indx,n) = ctro(i,indx,n) + ercko(i,indx,n) = ctro(i,indx,n) endif enddo enddo @@ -1014,6 +1016,7 @@ subroutine samfshalcnv_run(im,km,itc,ntc,cliq,cp,cvap, & factor = 1. + tem ecko(i,k,n) = ((1.-tem)*ecko(i,k-1,n)+tem* & (ctro(i,k,n)+ctro(i,k-1,n)))/factor + ercko(i,k,n) = ecko(i,k,n) endif endif enddo @@ -1032,6 +1035,7 @@ subroutine samfshalcnv_run(im,km,itc,ntc,cliq,cp,cvap, & factor = 1. + tem ecko(i,k,kk) = ((1. - tem) * ecko(i,k-1,kk) + tem * & (ctro(i,k,kk) + ctro(i,k-1,kk))) / factor + ercko(i,k,kk) = ecko(i,k,kk) chem_c(i,k,n) = escav * fscav(n) * ecko(i,k,kk) tem = chem_c(i,k,n) / (1. + c0t(i,k) * dz) chem_pw(i,k,n) = c0t(i,k) * dz * tem * eta(i,k-1) @@ -1208,12 +1212,10 @@ subroutine samfshalcnv_run(im,km,itc,ntc,cliq,cp,cvap, & qrch = qeso(i,k) & + gamma * dbyo(i,k) / (hvap * (1. + gamma)) cj - tem = 0.5 * (xlamue(i,k)+xlamue(i,k-1)) * dz - tem1 = 0.5 * xlamud(i) * dz + tem = 0.25 * (xlamue(i,k)+xlamue(i,k-1)) * dz tem = cq * tem - tem1 = cq * tem1 - factor = 1. + tem - tem1 - qcko(i,k) = ((1.-tem1)*qcko(i,k-1)+tem*0.5* + factor = 1. + tem + qcko(i,k) = ((1.-tem)*qcko(i,k-1)+tem* & (qo(i,k)+qo(i,k-1)))/factor qrcko(i,k) = qcko(i,k) cj @@ -1376,12 +1378,10 @@ subroutine samfshalcnv_run(im,km,itc,ntc,cliq,cp,cvap, & qrch = qeso(i,k) & + gamma * dbyo(i,k) / (hvap * (1. + gamma)) cj - tem = 0.5 * (xlamue(i,k)+xlamue(i,k-1)) * dz - tem1 = 0.5 * xlamud(i) * dz + tem = 0.25 * (xlamue(i,k)+xlamue(i,k-1)) * dz tem = cq * tem - tem1 = cq * tem1 - factor = 1. + tem - tem1 - qcko(i,k) = ((1.-tem1)*qcko(i,k-1)+tem*0.5* + factor = 1. + tem + qcko(i,k) = ((1.-tem)*qcko(i,k-1)+tem* & (qo(i,k)+qo(i,k-1)))/factor qrcko(i,k) = qcko(i,k) cj @@ -1621,7 +1621,7 @@ subroutine samfshalcnv_run(im,km,itc,ntc,cliq,cp,cvap, & if(k > kb(i) .and. k < ktcon(i)) then dp = 1000. * del(i,k) cj - tem1 = -eta(i,k) * ecko(i,k,n) + tem1 = -eta(i,k) * ercko(i,k,n) tem2 = -eta(i,k-1) * ecko(i,k-1,n) dellae(i,k,n) = dellae(i,k,n) + (tem1-tem2) * grav/dp cj