Changeset 928 for codes/icosagcm/devel/Python/src
- Timestamp:
- 06/21/19 01:01:34 (5 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
codes/icosagcm/devel/Python/src/kernels_caldyn_hevi.jin
r878 r928 1 KERNEL(caldyn_wflux)2 SEQUENCE_C03 BODY('llm-1,1,-1')4 ! cumulate mass flux convergence from top to bottom5 convm(CELL) = convm(CELL) + convm(UP(CELL))6 END_BLOCK7 EPILOGUE(1)8 dmass_col(HIDX(CELL)) = convm(CELL)9 END_BLOCK10 BODY('2,llm')11 ! Compute vertical mass flux (l=1,llm+1 set to zero at init)12 wflux(CELL) = mass_bl(CELL) * dmass_col(HIDX(CELL)) - convm(CELL)13 END_BLOCK14 END_BLOCK15 ! make sure wflux is up to date16 BARRIER17 END_BLOCK18 19 KERNEL(caldyn_dmass)20 FORALL_CELLS()21 ON_PRIMAL22 convm(CELL) = mass_dbk(CELL) * dmass_col(HIDX(CELL))23 END_BLOCK24 END_BLOCK25 END_BLOCK26 27 KERNEL(caldyn_vert)28 29 DO iq=1,nqdyn30 FORALL_CELLS('2', 'llm')31 ON_PRIMAL32 dtheta_rhodz(CELL,iq) = dtheta_rhodz(CELL,iq) + 0.5*(theta(CELL,iq)+theta(DOWN(CELL),iq))*wflux(CELL)33 END_BLOCK34 END_BLOCK35 FORALL_CELLS('1', 'llm-1')36 ON_PRIMAL37 dtheta_rhodz(CELL,iq) = dtheta_rhodz(CELL,iq) - 0.5*(theta(CELL,iq)+theta(UP(CELL),iq))*wflux(UP(CELL))38 END_BLOCK39 END_BLOCK40 END DO41 42 IF(caldyn_vert_variant == caldyn_vert_cons) THEN43 ! conservative vertical transport of momentum : (F/m)du/deta = 1/m (d/deta(Fu)-u.dF/deta)44 FORALL_CELLS('2','llm')45 ON_EDGES46 wwuu(EDGE) = .25*(wflux(CELL1)+wflux(CELL2))*(u(EDGE)+u(DOWN(EDGE))) ! Fu47 END_BLOCK48 END_BLOCK49 ! make sure wwuu is up to date50 BARRIER51 52 FORALL_CELLS()53 ON_EDGES54 dFu_deta = wwuu(UP(EDGE))-wwuu(EDGE) ! d/deta (F*u)55 dF_deta = .5*(wflux(UP(CELL1))+wflux(UP(CELL2))-(wflux(CELL1)+wflux(CELL2))) ! d/deta(F)56 du(EDGE) = du(EDGE) - (dFu_deta-u(EDGE)*dF_deta) / (.5*(rhodz(CELL1)+rhodz(CELL2))) ! (F/m)du/deta57 END_BLOCK58 END_BLOCK59 ELSE60 FORALL_CELLS('2','llm')61 ON_EDGES62 wwuu(EDGE) = .5*(wflux(CELL1)+wflux(CELL2))*(u(EDGE)-u(DOWN(EDGE)))63 END_BLOCK64 END_BLOCK65 66 ! make sure wwuu is up to date67 BARRIER68 69 FORALL_CELLS()70 ON_EDGES71 du(EDGE) = du(EDGE) - (wwuu(EDGE)+wwuu(UP(EDGE))) / (rhodz(CELL1)+rhodz(CELL2))72 END_BLOCK73 END_BLOCK74 END IF75 76 END_BLOCK77 78 1 KERNEL(gradient) 79 2 FORALL_CELLS_EXT() … … 95 18 END_BLOCK 96 19 END_BLOCK 97 98
Note: See TracChangeset
for help on using the changeset viewer.