Changeset 876 for codes/icosagcm/devel/Python
- Timestamp:
- 05/28/19 22:44:58 (5 years ago)
- Location:
- codes/icosagcm/devel/Python/src
- Files:
-
- 2 edited
Legend:
- Unmodified
- Added
- Removed
-
codes/icosagcm/devel/Python/src/kernels_caldyn_NH.jin
r821 r876 250 250 END_BLOCK 251 251 252 KERNEL(caldyn_slow_NH)253 FORALL_CELLS_EXT('1', 'llm+1')254 ON_PRIMAL255 CST_IF(IS_INNER_INTERFACE, w_il(CELL) = 2.*W(CELL)/(rhodz(KDOWN(CELL))+rhodz(KUP(CELL))) )256 CST_IF(IS_BOTTOM_LEVEL, w_il(CELL) = 2.*W(CELL)/rhodz(KUP(CELL)) )257 CST_IF(IS_TOP_INTERFACE, w_il(CELL) = 2.*W(CELL)/rhodz(KDOWN(CELL)) )258 END_BLOCK259 END_BLOCK260 FORALL_CELLS_EXT('1', 'llm+1')261 ON_EDGES262 ! compute DePhi, v_el, G_el, F_el263 ! v_el, W2_el and therefore G_el incorporate metric factor le_de264 ! while DePhil, W_el and F_el do not265 W_el = .5*( W(CELL2)+W(CELL1) )266 DePhil(EDGE) = SIGN*(Phi(CELL2)-Phi(CELL1))267 F_el(EDGE) = DePhil(EDGE)*W_el268 W2_el = .5*LE_DE * ( W(CELL1)*w_il(CELL1) + W(CELL2)*w_il(CELL2) )269 v_el(EDGE) = .5*LE_DE*(u(KUP(EDGE))+u(KDOWN(EDGE))) ! checked270 G_el(EDGE) = v_el(EDGE)*W_el - DePhil(EDGE)*W2_el271 END_BLOCK272 END_BLOCK273 274 FORALL_CELLS_EXT('1', 'llm+1')275 ! compute GradPhi2, dPhi, dW276 ON_PRIMAL277 gPhi2=0.278 dP=0.279 divG=0280 FORALL_EDGES281 gPhi2 = gPhi2 + LE_DE*DePhil(EDGE)**2282 dP = dP + LE_DE*DePhil(EDGE)*v_el(EDGE)283 divG = divG + SIGN*G_el(EDGE) ! -div(G_el), G_el already has le_de284 END_BLOCK285 gradPhi2(CELL) = 1./(2.*AI) * gPhi2286 dPhi(CELL) = gradPhi2(CELL)*w_il(CELL) - 1./(2.*AI)*dP287 dW(CELL) = (-1./AI)*divG288 END_BLOCK289 END_BLOCK290 291 ! We need a barrier here because we compute gradPhi2, F_el and w_il above and do a vertical average below292 BARRIER293 294 FORALL_CELLS_EXT()295 ! Compute berni at scalar points296 ON_PRIMAL297 u2=0.298 FORALL_EDGES299 u2 = u2 + LE_DE*u(EDGE)**2300 END_BLOCK301 berni(CELL) = 1./(4.*AI) * u2 - .25*( gradPhi2(CELL)*w_il(CELL)**2 + gradPhi2(UP(CELL))*w_il(UP(CELL))**2 )302 END_BLOCK303 END_BLOCK304 305 FORALL_CELLS_EXT()306 ON_EDGES307 ! Compute mass flux and grad(berni)308 uu = .5*(rhodz(CELL1)+rhodz(CELL2))*u(EDGE) - .5*( F_el(EDGE)+F_el(UP(EDGE)) )309 hflux(EDGE) = LE_DE*uu310 du(EDGE) = SIGN*(berni(CELL1)-berni(CELL2))311 END_BLOCK312 END_BLOCK313 314 END_BLOCK -
codes/icosagcm/devel/Python/src/kernels_caldyn_hevi.jin
r858 r876 127 127 END_BLOCK 128 128 129 KERNEL(coriolis)130 !131 DO iq=1,nqdyn132 FORALL_CELLS_EXT()133 ON_EDGES134 Ftheta(EDGE) = .5*(theta(CELL1,iq)+theta(CELL2,iq))*hflux(EDGE)135 END_BLOCK136 END_BLOCK137 FORALL_CELLS()138 ON_PRIMAL139 divF=0.140 FORALL_EDGES141 divF = divF + Ftheta(EDGE)*SIGN142 END_BLOCK143 dtheta_rhodz(CELL,iq) = -divF / AI144 END_BLOCK145 END_BLOCK146 END DO ! iq147 !148 FORALL_CELLS()149 ON_PRIMAL150 divF=0.151 FORALL_EDGES152 divF = divF + hflux(EDGE)*SIGN153 END_BLOCK154 convm(CELL) = -divF / AI155 END_BLOCK156 END_BLOCK157 !158 FORALL_CELLS()159 ON_EDGES160 du_trisk=0.161 FORALL_TRISK162 du_trisk = du_trisk + WEE*hflux(EDGE_TRISK)*(qu(EDGE)+qu(EDGE_TRISK))163 END_BLOCK164 du(EDGE) = du(EDGE) + .5*du_trisk165 END_BLOCK166 END_BLOCK167 168 END_BLOCK
Note: See TracChangeset
for help on using the changeset viewer.