Changeset 625


Ignore:
Timestamp:
12/08/17 15:10:22 (6 years ago)
Author:
dubos
Message:

devel : introduced kernels for caldyn_vert (optional)

File:
1 edited

Legend:

Unmodified
Added
Removed
  • codes/icosagcm/devel/Python/src/kernels_caldyn_hevi.jin

    r615 r625  
    1 KERNEL(caldyn_vert) 
     1KERNEL(caldyn_wflux) 
    22  SEQUENCE 
    33    BODY('llm-1,1,-1') 
     
    1313    END_BLOCK 
    1414  END_BLOCK 
    15  
    1615  ! make sure wflux is up to date 
    1716  BARRIER 
    18    
    19   FORALL_CELLS('2','llm') 
    20     ON_EDGES 
    21       wwuu(EDGE) = .5*(wflux(CELL1)+wflux(CELL2))*(u(EDGE)-u(DOWN(EDGE))) 
    22     END_BLOCK 
    23   END_BLOCK 
    24  
    25   ! make sure wwuu is up to date 
    26   BARRIER 
    27  
     17END_BLOCK 
     18 
     19KERNEL(caldyn_dmass) 
    2820  FORALL_CELLS() 
    2921    ON_PRIMAL 
    30       convm(CELL) = mass_dbk(CELL) * dmass_col(HIDX(CELL)) ! FIXME : we shoud prognose mass_col 
    31     END_BLOCK 
    32     ON_EDGES 
    33       du(EDGE) = du(EDGE) - (wwuu(EDGE)+wwuu(UP(EDGE))) / (rhodz(CELL1)+rhodz(CELL2)) 
    34     END_BLOCK 
    35   END_BLOCK 
     22      convm(CELL) = mass_dbk(CELL) * dmass_col(HIDX(CELL)) 
     23    END_BLOCK 
     24  END_BLOCK 
     25END_BLOCK 
     26 
     27KERNEL(caldyn_vert) 
    3628 
    3729  DO iq=1,nqdyn 
     
    4739    END_BLOCK 
    4840  END DO 
     41 
     42  IF(caldyn_vert_variant == caldyn_vert_cons) THEN 
     43    ! conservative vertical transport of momentum : (F/m)du/deta = 1/m (d/deta(Fu)-u.dF/deta) 
     44    FORALL_CELLS('2','llm') 
     45      ON_EDGES 
     46        wwuu(EDGE) = .25*(wflux(CELL1)+wflux(CELL2))*(u(EDGE)+u(DOWN(EDGE))) ! Fu 
     47      END_BLOCK 
     48    END_BLOCK 
     49    ! make sure wwuu is up to date 
     50    BARRIER 
     51 
     52    FORALL_CELLS() 
     53      ON_EDGES 
     54        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/deta 
     57      END_BLOCK 
     58    END_BLOCK 
     59  ELSE   
     60    FORALL_CELLS('2','llm') 
     61      ON_EDGES 
     62        wwuu(EDGE) = .5*(wflux(CELL1)+wflux(CELL2))*(u(EDGE)-u(DOWN(EDGE))) 
     63      END_BLOCK 
     64    END_BLOCK 
     65 
     66    ! make sure wwuu is up to date 
     67    BARRIER 
     68 
     69    FORALL_CELLS() 
     70      ON_EDGES 
     71        du(EDGE) = du(EDGE) - (wwuu(EDGE)+wwuu(UP(EDGE))) / (rhodz(CELL1)+rhodz(CELL2)) 
     72      END_BLOCK 
     73    END_BLOCK 
     74  END IF 
     75 
    4976END_BLOCK 
    5077 
Note: See TracChangeset for help on using the changeset viewer.