!-------------------------------------------------------------------------- !---------------------------- caldyn_vert_NH ---------------------------------- !$OMP DO SCHEDULE(STATIC) DO ij = 1, primal_num l=1 w_ij = ( W(l,ij)+.5*W(l+1,ij) )/mass(l,ij) wflux_ij = .5*(wflux(l,ij)+wflux(l+1,ij)) W_etadot(l,ij) = wflux_ij*w_ij eta_dot(l,ij) = wflux_ij / mass(l,ij) wcov(l,ij) = w_ij*(geopot(l+1,ij)-geopot(l,ij)) DO l = 2, llm-1 w_ij = .5*( W(l,ij)+W(l+1,ij) )/mass(l,ij) wflux_ij = .5*(wflux(l,ij)+wflux(l+1,ij)) W_etadot(l,ij) = wflux_ij*w_ij eta_dot(l,ij) = wflux_ij / mass(l,ij) wcov(l,ij) = w_ij*(geopot(l+1,ij)-geopot(l,ij)) END DO l=llm w_ij = ( .5*W(l,ij)+W(l+1,ij) )/mass(l,ij) wflux_ij = .5*(wflux(l,ij)+wflux(l+1,ij)) W_etadot(l,ij) = wflux_ij*w_ij eta_dot(l,ij) = wflux_ij / mass(l,ij) wcov(l,ij) = w_ij*(geopot(l+1,ij)-geopot(l,ij)) END DO !$OMP END DO ! add NH term to du !$OMP DO SCHEDULE(STATIC) DO edge = 1, edge_num ij_left = left(edge) ij_right = right(edge) DO l = 1, llm du(l,edge) = du(l,edge) - .5*(wcov(l,ij_left)+wcov(l,ij_right))*1.*(eta_dot(l,ij_right)-eta_dot(l,ij_left)) END DO END DO !$OMP END DO ! add NH terms to dW, dPhi ! FIXME : TODO top and bottom !$OMP DO SCHEDULE(STATIC) DO ij = 1, primal_num DO l = 2, llm dPhi(l,ij)=dPhi(l,ij)-wflux(l,ij)*(geopot(l+1,ij)-geopot(l-1,ij))/(mass(l-1,ij)+mass(l,ij)) END DO END DO !$OMP END DO ! We need a barrier here because we compute W_etadot above and do a vertical difference below !$OMP BARRIER !$OMP DO SCHEDULE(STATIC) DO ij = 1, primal_num l=1 dW(l,ij) = dW(l,ij) - W_etadot(l,ij) DO l = 2, llm dW(l,ij) = dW(l,ij) + W_etadot(l-1,ij) - W_etadot(l,ij) END DO l=llm+1 dW(l,ij) = dW(l,ij) + W_etadot(l-1,ij) END DO !$OMP END DO !---------------------------- caldyn_vert_NH ---------------------------------- !--------------------------------------------------------------------------