Ignore:
Timestamp:
09/28/18 12:59:46 (6 years ago)
Author:
dubos
Message:

devel : added vertical diffusion to idealized venus physics

File:
1 edited

Legend:

Unmodified
Added
Removed
  • codes/icosagcm/devel/src/physics/physics.f90

    r739 r741  
    1212       phys_lmdz_generic=21, phys_external=22 
    1313  INTEGER :: phys_type 
    14   TYPE(t_field),POINTER,SAVE :: f_extra_physics_2D(:), f_extra_physics_3D(:) 
    1514  TYPE(t_field),POINTER,SAVE :: f_dulon(:), f_dulat(:) 
    1615  TYPE(t_field),POINTER,SAVE :: f_ulon(:), f_ulat(:) 
     
    5049    CASE ('held_suarez') 
    5150       phys_type = phys_HS94 
    52     CASE ('Lebonnois2012') 
    53        phys_type = phys_LB2012 
    54        CALL init_phys_venus        
    5551    CASE ('phys_lmdz_generic') 
    5652       phys_type=phys_lmdz_generic 
     
    7975          phys_type = phys_DCMIP2016 
    8076          CALL init_physics_dcmip2016 
     77       CASE ('Lebonnois2012') 
     78          phys_type = phys_LB2012 
     79          CALL init_phys_venus        
    8180       CASE DEFAULT 
    8281          IF(is_mpi_root) PRINT*, 'init_physics : Bad selector for variable physics <',& 
     
    129128  END SUBROUTINE add_du_phys 
    130129 
    131   SUBROUTINE physics(it,f_phis, f_ps, f_theta_rhodz, f_ue, f_wflux, f_q) 
     130  SUBROUTINE physics(it,f_phis, f_geopot, f_ps, f_theta_rhodz, f_ue, f_wflux, f_q) 
    132131    USE physics_lmdz_generic_mod, ONLY : physics_lmdz_generic => physics 
    133132    USE physics_external_mod, ONLY : physics_external => physics 
     
    135134    USE physics_dcmip2016_mod, ONLY : write_physics_dcmip2016 => write_physics 
    136135    USE etat0_heldsz_mod 
    137     USE etat0_venus_mod, ONLY : phys_venus => physics 
    138136    INTEGER, INTENT(IN)   :: it 
    139137    TYPE(t_field),POINTER :: f_phis(:) 
     138    TYPE(t_field),POINTER :: f_geopot(:) 
    140139    TYPE(t_field),POINTER :: f_ps(:) 
    141140    TYPE(t_field),POINTER :: f_theta_rhodz(:) 
     
    161160       CASE (phys_external) 
    162161         CALL physics_external(it ,f_phis, f_ps, f_theta_rhodz, f_ue, f_wflux, f_q) 
    163        CASE(phys_LB2012) 
    164           CALL phys_venus(f_ps,f_theta_rhodz,f_ue)  
    165162       CASE DEFAULT 
    166           CALL physics_column(it, f_phis, f_ps, f_theta_rhodz, f_ue, f_q) 
     163          CALL physics_column(it, f_phis, f_geopot, f_ps, f_theta_rhodz, f_ue, f_q) 
    167164       END SELECT 
    168165 
     
    197194  END SUBROUTINE write_physics_tendencies 
    198195     
    199   SUBROUTINE physics_column(it, f_phis, f_ps, f_theta_rhodz, f_ue, f_q) 
     196  SUBROUTINE physics_column(it, f_phis, f_geopot, f_ps, f_theta_rhodz, f_ue, f_q) 
    200197    USE physics_dcmip_mod, ONLY : full_physics_dcmip => full_physics 
    201198    USE physics_dcmip2016_mod, ONLY : full_physics_dcmip2016 => full_physics 
     199    USE etat0_venus_mod, ONLY : full_physics_venus=>full_physics 
    202200    USE theta2theta_rhodz_mod 
    203201    USE mpipara 
    204202    USE checksum_mod 
    205203    TYPE(t_field),POINTER :: f_phis(:) 
     204    TYPE(t_field),POINTER :: f_geopot(:) 
    206205    TYPE(t_field),POINTER :: f_ps(:) 
    207206    TYPE(t_field),POINTER :: f_theta_rhodz(:) 
     
    209208    TYPE(t_field),POINTER :: f_q(:) 
    210209    REAL(rstd),POINTER :: phis(:) 
     210    REAL(rstd),POINTER :: geopot(:,:) 
    211211    REAL(rstd),POINTER :: ps(:) 
    212212    REAL(rstd),POINTER :: temp(:,:) 
     
    228228       CALL swap_geometry(ind) 
    229229       phis=f_phis(ind) 
     230       geopot=f_geopot(ind) 
    230231       ps=f_ps(ind) 
    231232       temp=f_temp(ind) 
     
    236237       ulon=f_ulon(ind) 
    237238       ulat=f_ulat(ind) 
    238        CALL pack_physics(pack_info(ind), phis, ps, temp, ue, q, p, pk, ulon, ulat) 
     239       CALL pack_physics(pack_info(ind), phis, geopot, ps, temp, ue, q, p, pk, ulon, ulat) 
    239240    END DO 
    240241 
     
    244245    CASE (phys_DCMIP2016) 
    245246       IF (is_omp_level_master) CALL full_physics_dcmip2016 
     247    CASE(phys_LB2012) 
     248       IF (is_omp_level_master) CALL full_physics_venus 
    246249    CASE DEFAULT 
    247250       IF(is_master) PRINT *,'Internal error : illegal value of phys_type', phys_type 
     
    279282  END SUBROUTINE physics_column 
    280283 
    281   SUBROUTINE pack_physics(info, phis, ps, temp, ue, q, p, pk, ulon, ulat ) 
     284  SUBROUTINE pack_physics(info, phis, geopot, ps, temp, ue, q, p, pk, ulon, ulat ) 
    282285    USE wind_mod 
    283286    USE pression_mod 
     
    286289    TYPE(t_pack_info) :: info 
    287290    REAL(rstd) :: phis(iim*jjm) 
     291    REAL(rstd) :: geopot(iim*jjm,llm+1) 
    288292    REAL(rstd) :: ps(iim*jjm) 
    289293    REAL(rstd) :: temp(iim*jjm,llm) 
     
    308312    IF (is_omp_level_master) THEN 
    309313      CALL pack_domain(info, phis, physics_inout%phis) 
     314      CALL pack_domain(info, geopot, physics_inout%geopot) 
    310315      CALL pack_domain(info, p, physics_inout%p) 
    311316      CALL pack_domain(info, pk, physics_inout%pk) 
Note: See TracChangeset for help on using the changeset viewer.