Ignore:
Timestamp:
07/05/19 15:13:09 (5 years ago)
Author:
dubos
Message:

devel : DySL for enstrophy-conserving scheme

File:
1 edited

Legend:

Unmodified
Added
Removed
  • codes/icosagcm/devel/src/dynamics/compute_caldyn_Coriolis.F90

    r939 r940  
    11MODULE compute_caldyn_Coriolis_mod 
    22  USE prec, ONLY : rstd 
     3  USE caldyn_vars_mod, ONLY : caldyn_conserv, conserv_energy, conserv_enstrophy, conserv_gassmann 
    34  USE grid_param 
    45  USE earth_const 
     
    4647    END_BLOCK 
    4748  END_BLOCK 
    48 ! 
    49   FORALL_CELLS() 
    50     ON_EDGES 
    51       du_trisk=0. 
    52       FORALL_TRISK 
    53         du_trisk = du_trisk + WEE*hflux(EDGE_TRISK)*(qu(EDGE)+qu(EDGE_TRISK)) 
    54       END_BLOCK 
    55       du(EDGE) = du(EDGE) + .5*du_trisk 
    56     END_BLOCK 
    57   END_BLOCK 
    58  
     49  ! 
     50  SELECT CASE(caldyn_conserv) 
     51  CASE(conserv_energy) ! energy-conserving TRiSK 
     52     FORALL_CELLS() 
     53       ON_EDGES 
     54         du_trisk=0. 
     55         FORALL_TRISK 
     56           du_trisk = du_trisk + WEE*hflux(EDGE_TRISK)*(qu(EDGE)+qu(EDGE_TRISK)) 
     57         END_BLOCK 
     58         du(EDGE) = du(EDGE) + .5*du_trisk 
     59       END_BLOCK 
     60     END_BLOCK 
     61  CASE(conserv_enstrophy) ! enstrophy-conserving TRiSK 
     62     FORALL_CELLS() 
     63       ON_EDGES 
     64         du_trisk=0. 
     65         FORALL_TRISK 
     66           du_trisk = du_trisk + WEE*hflux(EDGE_TRISK) 
     67         END_BLOCK 
     68         du(EDGE) = du(EDGE) + du_trisk*qu(EDGE) 
     69       END_BLOCK 
     70     END_BLOCK 
     71  END SELECT 
    5972END_BLOCK 
    6073 
     
    6578    USE data_unstructured_mod, ONLY : enter_trace, exit_trace, & 
    6679         id_coriolis, left, right, primal_deg, primal_edge, primal_ne, & 
    67          trisk_deg, trisk, wee ! FIXME wee 
     80         trisk_deg, trisk 
    6881          
    6982    FIELD_U     :: hflux, Ftheta, qu, du ! IN, BUF, IN, INOUT 
     
    8093  SUBROUTINE compute_caldyn_Coriolis_hex(hflux,theta,qu, Ftheta, convm,dtheta_rhodz,du) 
    8194    USE icosa 
    82     USE caldyn_vars_mod 
    8395    REAL(rstd),INTENT(IN)    :: hflux(3*iim*jjm,llm)  ! hflux in kg/s 
    8496    REAL(rstd),INTENT(IN)    :: theta(iim*jjm,llm,nqdyn) ! active scalars 
Note: See TracChangeset for help on using the changeset viewer.