Ignore:
Timestamp:
Sep 7, 2023, 1:07:27 PM (9 months ago)
Author:
idelkadi
Message:

Implementation in the LMDZ code of the double call of the ECRAD radiative transfer code to estimate the 3D radiative effect of clouds.

  • This double call of Ecrad is controlled by the ok_3Deffect logic key.
  • If this key is enabled, 2 files of parameter configuration "namelists" for ECRAD are required at runtime: namelist_ecrad and namelist_ecrad_s2.
  • If this key is deactivated, the configuration and initialization part (reading namelist and netcdf files) is performed only once during simulation (1st call to ECRAD). Otherwise, configuration and initialization are performed each time Ecrad is called.
File:
1 edited

Legend:

Unmodified
Added
Removed
  • LMDZ6/trunk/libf/phylmd/phys_state_var_mod.F90

    r4613 r4677  
    399399!$OMP THREADPRIVATE(swdnc0p, swdn0p, swdnp, swupc0p, swup0p, swupp)
    400400
     401!AI ajout variables double appel Ecrad (3Deffect)
     402      REAL,ALLOCATABLE,SAVE :: heat_s2(:,:), cool_s2(:,:)
     403!$OMP THREADPRIVATE(heat_s2, cool_s2)
     404      REAL,ALLOCATABLE,SAVE :: heat0_s2(:,:), cool0_s2(:,:)
     405!$OMP THREADPRIVATE(heat0_s2, cool0_s2)
     406      REAL,ALLOCATABLE,SAVE :: radsol_s2(:), topsw_s2(:), toplw_s2(:)
     407!$OMP THREADPRIVATE(radsol_s2, topsw_s2, toplw_s2)
     408      REAL,ALLOCATABLE,SAVE :: albpla_s2(:)
     409!$OMP THREADPRIVATE(albpla_s2)
     410      REAL,ALLOCATABLE,SAVE :: solsw_s2(:), solswfdiff_s2(:), sollw_s2(:)
     411!$OMP THREADPRIVATE(solsw_s2, solswfdiff_s2, sollw_s2)
     412      REAL,ALLOCATABLE,SAVE :: sollwdown_s2(:)
     413!$OMP THREADPRIVATE(sollwdown_s2)
     414      REAL,ALLOCATABLE,SAVE :: topsw0_s2(:),toplw0_s2(:)
     415      REAL,ALLOCATABLE,SAVE :: solsw0_s2(:),sollw0_s2(:)
     416!$OMP THREADPRIVATE(topsw0_s2,toplw0_s2,solsw0_s2,sollw0_s2)
     417      REAL,ALLOCATABLE,SAVE :: lwdnc0_s2(:,:), lwdn0_s2(:,:), lwdn_s2(:,:)
     418      REAL,ALLOCATABLE,SAVE :: lwupc0_s2(:,:), lwup0_s2(:,:), lwup_s2(:,:)
     419!$OMP THREADPRIVATE(lwdnc0_s2,lwdn0_s2,lwdn_s2,lwupc0_s2,lwup0_s2,lwup_s2)       
     420      REAL,ALLOCATABLE,SAVE :: swdnc0_s2(:,:), swdn0_s2(:,:), swdn_s2(:,:)
     421      REAL,ALLOCATABLE,SAVE :: swupc0_s2(:,:), swup0_s2(:,:), swup_s2(:,:)
     422!$OMP THREADPRIVATE(swdnc0_s2, swdn0_s2, swdn_s2, swupc0_s2, swup0_s2, swup_s2)
     423
    401424! pbase : cloud base pressure
    402425! bbase : cloud base buoyancy
     
    697720      ALLOCATE(swdnc0p(klon,klevp1), swdn0p(klon,klevp1), swdnp(klon,klevp1))
    698721      ALLOCATE(swupc0p(klon,klevp1), swup0p(klon,klevp1), swupp(klon,klevp1))
     722
     723!AI Ajout pour Ecrad (3Deffect)       
     724      ALLOCATE(heat_s2(klon,klev), cool_s2(klon,klev))
     725      ALLOCATE(heat0_s2(klon,klev), cool0_s2(klon,klev))
     726      ALLOCATE(radsol_s2(klon), topsw_s2(klon), toplw_s2(klon))
     727      ALLOCATE(albpla_s2(klon))
     728      ALLOCATE(solsw_s2(klon), solswfdiff_s2(klon), sollw_s2(klon))
     729      ALLOCATE(sollwdown_s2(klon))
     730      ALLOCATE(topsw0_s2(klon),toplw0_s2(klon))
     731      ALLOCATE(solsw0_s2(klon),sollw0_s2(klon))
     732      ALLOCATE(lwdnc0_s2(klon,klevp1), lwdn0_s2(klon,klevp1), lwdn_s2(klon,klevp1))
     733      ALLOCATE(lwupc0_s2(klon,klevp1), lwup0_s2(klon,klevp1), lwup_s2(klon,klevp1))
     734      ALLOCATE(swdnc0_s2(klon,klevp1), swdn0_s2(klon,klevp1), swdn_s2(klon,klevp1))
     735      ALLOCATE(swupc0_s2(klon,klevp1), swup0_s2(klon,klevp1), swup_s2(klon,klevp1))
    699736
    700737      ALLOCATE(cape(klon))
     
    856893      DEALLOCATE(topsw0,toplw0,solsw0,sollw0)
    857894      DEALLOCATE(albpla)
     895
     896!AI Ajout pour Ecrad (3Deffect)
     897      DEALLOCATE(heat_s2, cool_s2)
     898      DEALLOCATE(heat0_s2, cool0_s2)
     899      DEALLOCATE(radsol_s2, topsw_s2, toplw_s2)
     900      DEALLOCATE(albpla_s2)
     901      DEALLOCATE(solsw_s2, solswfdiff_s2, sollw_s2)
     902      DEALLOCATE(sollwdown_s2)
     903      DEALLOCATE(topsw0_s2,toplw0_s2)
     904      DEALLOCATE(solsw0_s2,sollw0_s2)
     905      DEALLOCATE(lwdnc0_s2, lwdn0_s2, lwdn_s2)
     906      DEALLOCATE(lwupc0_s2, lwup0_s2, lwup_s2)
     907      DEALLOCATE(swdnc0_s2, swdn0_s2, swdn_s2)
     908      DEALLOCATE(swupc0_s2, swup0_s2, swup_s2)
     909
    858910!IM ajout variables CFMIP2/CMIP5
    859911      DEALLOCATE(heatp, coolp)
Note: See TracChangeset for help on using the changeset viewer.