Changeset 381


Ignore:
Timestamp:
05/25/16 10:00:49 (8 years ago)
Author:
ymipsl
Message:

Add DCMIP2016 physics

(first guess)

YM

Location:
codes/icosagcm/trunk/src
Files:
4 added
2 edited

Legend:

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

    r347 r381  
    55  PRIVATE 
    66 
    7   INTEGER, PARAMETER :: phys_none=0, phys_HS94=1, phys_DCMIP=2, phys_lmdz_generic=3, phys_LB2012=4, phys_external=5 
     7  INTEGER, PARAMETER :: phys_none=0, phys_HS94=1, phys_DCMIP=2, phys_lmdz_generic=3, phys_LB2012=4, phys_external=5, phys_DCMIP2016=6 
    88 
    99  INTEGER :: phys_type 
     
    2525    USE physics_interface_mod 
    2626    USE physics_dcmip_mod, ONLY : init_physics_dcmip=>init_physics 
     27    USE physics_dcmip2016_mod, ONLY : init_physics_dcmip2016=>init_physics 
    2728    USE etat0_venus_mod, ONLY : init_phys_venus=>init_physics 
    2829    USE physics_lmdz_generic_mod, ONLY : init_physics_lmdz_generic=>init_physics 
     
    5758       CALL init_pack_after ! Defines Ai, lon, lat in physics_inout 
    5859       phys_type = phys_DCMIP 
     60    CASE ('dcmip2016') 
     61       CALL allocate_field(f_dulon,field_t,type_real,llm, name='dulon') 
     62       CALL allocate_field(f_dulat,field_t,type_real,llm, name='dulat') 
     63       CALL allocate_field(f_temp,field_t,type_real,llm, name='temp') 
     64       CALL allocate_field(f_temp,field_t,type_real,llm, name='temp') 
     65       CALL init_pack_before ! Compute physics_inout%ngrid and offsets used by pack/unpack 
     66       CALL init_physics_dcmip2016 
     67       CALL init_pack_after ! Defines Ai, lon, lat in physics_inout 
     68       phys_type = phys_DCMIP2016 
    5969    CASE DEFAULT 
    6070       IF(is_mpi_root) PRINT*, 'init_physics : Bad selector for variable physics <',& 
     
    7383    USE physics_external_mod, ONLY : physics_external => physics 
    7484    USE physics_dcmip_mod, ONLY : write_physics_dcmip => write_physics 
     85    USE physics_dcmip2016_mod, ONLY : write_physics_dcmip2016 => write_physics 
    7586    USE etat0_heldsz_mod 
    7687    USE etat0_venus_mod, ONLY : phys_venus => physics 
     
    119130       CASE (phys_DCMIP) 
    120131          CALL write_physics_dcmip 
     132       CASE (phys_DCMIP2016) 
     133          CALL write_physics_dcmip2016 
    121134       END SELECT 
    122135    END IF 
     
    128141    USE physics_interface_mod 
    129142    USE physics_dcmip_mod, ONLY : full_physics_dcmip => full_physics 
     143    USE physics_dcmip2016_mod, ONLY : full_physics_dcmip2016 => full_physics 
    130144    USE theta2theta_rhodz_mod 
    131145    USE mpipara 
     
    147161 
    148162    CALL theta_rhodz2temperature(f_ps,f_theta_rhodz,f_temp) 
    149  
     163     
    150164    DO ind=1,ndomain 
    151165       IF (.NOT. assigned_domain(ind)) CYCLE 
     
    163177    CASE (phys_DCMIP) 
    164178       CALL full_physics_dcmip 
     179    CASE (phys_DCMIP2016) 
     180       CALL full_physics_dcmip2016 
    165181    CASE DEFAULT 
    166182       IF(is_mpi_master) PRINT *,'Internal error : illegal value of phys_type', phys_type 
     
    197213  END SUBROUTINE physics_column 
    198214 
    199   SUBROUTINE pack_physics(info, phis, ps, temp, ue, q) 
     215  SUBROUTINE pack_physics(info, phis, ps, temp, ue, q ) 
    200216    USE icosa 
    201217    USE wind_mod 
     
    203219    USE theta2theta_rhodz_mod 
    204220    USE physics_interface_mod 
     221    USE exner_mod 
    205222    IMPLICIT NONE 
    206223    TYPE(t_pack_info) :: info 
     
    208225    REAL(rstd) :: ps(iim*jjm) 
    209226    REAL(rstd) :: temp(iim*jjm,llm) 
     227    REAL(rstd) :: pks(iim*jjm) 
     228    REAL(rstd) :: pk(iim*jjm,llm) 
    210229    REAL(rstd) :: ue(3*iim*jjm,llm) 
    211230    REAL(rstd) :: q(iim*jjm,llm,nqtot) 
     
    219238    CALL compute_pression(ps,p,0) 
    220239!$OMP BARRIER 
     240    CALL compute_exner(ps,p,pks,pk,0)  
     241!$OMP BARRIER 
    221242    CALL compute_wind_centered(ue,uc) 
    222243    CALL compute_wind_centered_lonlat_compound(uc, ulon, ulat) 
     
    224245    CALL pack_domain(info, phis, physics_inout%phis) 
    225246    CALL pack_domain(info, p, physics_inout%p) 
     247    CALL pack_domain(info, pk, physics_inout%pk) 
    226248    CALL pack_domain(info, Temp, physics_inout%Temp) 
    227249    CALL pack_domain(info, ulon, physics_inout%ulon) 
  • codes/icosagcm/trunk/src/physics_interface.f90

    r286 r381  
    1111     REAL(rstd), DIMENSION(:), POINTER :: Ai, lon, lat, phis 
    1212     ! Input, time-dependent 
    13      REAL(rstd), DIMENSION(:,:), POINTER :: p, Temp, ulon, ulat 
     13     REAL(rstd), DIMENSION(:,:), POINTER :: p, pk, Temp, ulon, ulat 
    1414     REAL(rstd), DIMENSION(:,:,:), POINTER :: q 
    1515     ! Output arrays 
Note: See TracChangeset for help on using the changeset viewer.